I have two image.RGBA objects: the background and the text layer. The text layer will be anti-aliased, and may have text in different colors. What I want is:
draw.Draw(bgLayer, bgLayer.Bounds(), textLayer, image.ZP, draw.OneMinusSrcAlpha)
Unfortunately, this is not an option. draw.Src obviously just overwrites the pixel. draw.Over is the same as draw.Src when the alpha channel is 255. When it is < 255, then the pixel acts as (0, 0, 0, alpha), so the color information disappears. It looks like they want me to use a mask, which means I'd have to create another image, and do the math on all the pixels myself; in that case, I might as well just write my own Draw function that does what I want.
I assume I'm missing something obvious, but I haven't found it in either the documentation or on Google yet.