I use layers to color my sprites.
My sprites are meant for flexible game development. For that reason, I want to make sure that I can recolor my sprites, paint symbols, decals, patterns and so on, easily and efficiently on a mass production scale.
I paint the actual object as a featureless greyscale object. Like assembling grey prefab models that you paint afterwards.
Then I add a new layer, which is set to “Hard light” or any other similar layer mode, then paint the color flatly on it without shading, since the grey object already provides the shading for the color to wrap around it. I then tweak the layermode, brightness and contrast of the color to get the look I want. During coloring, I also put in decals, patterns and other details, like painting on a prefab in real life.
You can imagine that changing colors, adding new decals, symbols and so on really easy and fast. Meanwhile the original sprite never gets damaged in the process too!