this is the expected behavior, the darker the color, the lower its RGB values are,
pure black is RGB:0,0,0
very dark black is like RGB:20,20,20
pure white is : RGB: 255,255,255
when tinting a sprite, there should be no change in brightness, pure black will stay pure black as its brightness is 0, very dark black will change very little, bright color will change drastically, because it has a bigger range of color value to tweek around.
If the effect you are after is not “tint”, that, dark area will change in brightness and color, then you probably want an overlay mode.
you can achieve overlay mode by simply making a copy of the sprite, color it in pure color (leave the opacity mask untouched),
then in game, you just need to place this sprite on top of your original sprite, and set its opacity to control how much you want the color to affect that sprite