Quick glance over your shader.
•1 if it helps readability create new variables.
•2 have only one gl_FragColor at the end of your shader, having more can cause those strange artifacts(gl_FragColor.rgb and gl_FragColor.a is okay)
•3 if you can use "*" except of "/" its a tiny bit faster : )
3.ps
uniform sampler2D texture0;
varying mediump vec2 uvVarying;
varying mediump vec4 colorVarying;
void main()
{
vec4 finalColor = vec4(0.0, 0.0, 0.0, 1.0);
if (uvVarying.y < 0.120) finalColor += vec4(1.0, 0.0, 0.0, 1.0);
else if (uvVarying.y < 0.250) finalColor += vec4(1.0, 0.5, 0.0, 1.0);
else if (uvVarying.y < 0.375) finalColor += vec4(1.0, 1.0, 0.0, 1.0);
else if (uvVarying.y < 0.500) finalColor += vec4(0.0, 1.0, 0.0, 1.0);
else if (uvVarying.y < 0.625) finalColor += vec4(0.0, 1.0, 1.0, 1.0);
else if (uvVarying.y < 0.750) finalColor += vec4(0.0, 0.0, 1.0, 1.0);
else if (uvVarying.y < 0.875) finalColor += vec4(1.0, 0.0, 1.0, 1.0);
else finalColor = vec4(1.0, 0.8, 1.0, 1.0);
vec4 blendColor = vec4(0.0, 0.0, 1.0, 1.0);
gl_FragColor = (finalColor + blendColor)*0.5; // OR gl_FragColor = mix(finalColor, blendColor, 0.5);
}