Colorize Grayscale Images

I have a number of images (pills, bottles etc) that are grayscale. I need to display these in various colors. My current idea was to take a specific image, and split it into 2 or 3 individual images.

where one would be a PNG mask only of the part that needed to change colors, and another would be those parts of the image to be displayed as is.

This works, however the colors are muted (as they are controlled by the levels of gray in the mask)
in this example there are 3 layers… the orange background, the “green” bottle, and the “as-is” bottle cap
as you can see the “green” is very light

can anyone think of another method where I can colorize parts (while maintain some semblence of shading).

I can slice and dice the original image however it needs to happen.
FYI… premaking the colored icons is not optimum as there would be close to 900 of them

What do you think about this approach (I used Affinity Photo but should be possible to replicate it in code, using Blendmodes and mask:

I used this (almost) grayscale image

filled the bottommost layer with green, added the image as as mask and another layer with the image, using BlendMode.Multiply:

almost exactly what I want… just gotta figure out how … thanks