I'm given large number of grayscale images, each as an array of grayscale values. For each image, I'd like to use the values as the alpha for drawing a single-color image of the same size in an arbitrary color. I can create a Bitmap where the RGB for each pixel is the solid color and the A is the corresponding grayscale value, and this works. However, I need to support multiple colors and creating a new Bitmap for each image/color combination seems terribly inefficient. Is there a more efficient approach in terms of memory and/or rendering speed?