I FINALLY found this thread again! hope I can add to the game.
I recently wrote a VB program converting a BMP into gcode for 3d engraving on our bridgeports here at work. Your coordinate system does not need to be complicated since your going to run through your entire image sequentially. i.e do complete first row - return home - goto next row - do complete row - return home. Yes you can add complexity if you want to print bi-directionally - but lets walk first - run later;-)
Keeping this Raster frame of mind eliminates the x,y issues, but keeps you color mixing at the print head. Since all graphic images are broken down into pixel grids all you need is to take the color values at each location and time the 'spray' based upon its value. The value is relative to the sprayer and will need to be fine tuned during assembly.
My 3d engraver used the color density to determine depth on the z. Your case would have to send all 3 parameters separately for each color. Very do-able in my mind.