Everybody is going to think I'm nuts ...
... but I've found latex paint works pretty well.
I once bought some "upholstery dye" that wasn't quite the right color; but it worked pretty well to spruce up the door panels. I noticed that it smelled like latex paint, looked like latex paint, dried like latex paint, and cleaned up with water like latex paint.
It seemed to work fine; so when I did the seat reupholstery (1995), I took a piece of the vinyl to Home Depot and had them use their paint color matching computer to mix me up a quart of semigloss latex house paint.
I used it on the door panels and the firewall upholstery. I apply it with a piece of foam rubber.
It's easy to do and it looks great -I've never used it on the seats so I don't know how well it would hold up there- but on the door panels (cards) I find it seems to get dirty more easily than it should, and it doesn't come clean very well. But adhesion is no problem at all.
Fortunately, it's really easy to touch it up.
I had intended it only as a quick-fix; but ... that was nearly 20 years ago.
I am thinking that if I had bought a high grade of paint, or if I had bought "scrubbable" paint; that it might stay clean better and might clean easier.
I have used Duplicolor before when I was doing rebuilders. Mostly I used it on headliners. I color-changed some seats once (the "basketweave" vinyl typical in aircooled VW's) and was pretty impressed that it worked successfully to change a black seat to red. I had to put it on pretty thick, and on a hot day some of it stuck together (where seat back and bottom pressed together) and came off. But that's a pretty tough application (much thicker coat than you'd normally apply) and it may be that it hadn't fully dried by that point.
Overall Duplicolor seems to be good stuff; but you are limited to the colors they offer.