Hi.
Therefore, as you have noticed, my program for finding unused colors starts from alpha 255. :) OR use _DONTBLEND in program :)
What you want, PAINT with alpha, is practically a problem. Alpha shows the RGB color intensity depending on the background used. Therefore, you would have to write a complex algorithm that would not work on the principle of a uniform color boundary of the place where you do new color. I've tried to write something like my own PAINT in the past, but it's more complicated than I thought. (I stopped having fun with it, so this is uncomplete somewhere on my harddrive).
Principle of function, as I imagined it: Read the color number X, Y at the place where you want to color. Then from this point go to all sides (something as your maze search algorithm) and look for the positions of the points that have a different color than the color of the place you want to color. After you get the whole circuit completely, you paint it and color it. That's how PAINT works right now, just looking for a specific color. I suppose ALPHA would not mind such a function. The only thing she cares about is a different (any) color point than the default color (color in place where is coloring applyed. before color apply). How confirm, that circuit is complete? Hmm.... good ask :)