Have you tried making the original image to be tinted greyscale? Then you should be able to set it to any colour you like. Alternatively this frag shader should work ( although I haven't tested it)
#version120
uniform sampler2D texture;
uniform vec4 tintColour;
void main()
{
//get greyscale value
vec4 texColour = texture2D(texture, gl_TexCoord[0].xy);
float amount = dot(texColour.rgb, vec3(0.299, 0.587, 0.114));
//set pixel to tint multiplied by value
gl_FragColor = vec4(vec3(tintColour.rgb * value), texColour.a);
}