I may be way off base here, I have never done anything remotely like this, but sometimes that's a good thing.

Forget about using a mesh for the UI. Allow color points to be added, moved, and deleted arbitrarily, and use some kind of bezier surfaces or contour mapping algorithm or whatever to interpolate between them. Added points are initialized to the current color at that point and can then be tweaked. Add as many or as few points as necessary to get the effect you want.