Translucent windows on Android are expected to contain colors premultiplied by alpha. The blending equation used by the window compositor is:
dest.rgb = src.rgb + dest.rgb*(1 - src.a)
Valid premultiplied colors always have color.rgb <= color.a. If this isn't the case, then the result of the blending equation can be larger than 1.0. In OpenGL ES, if you try to write a color larger than 1.0, it will be clamped to 1.0 (unless you're rendering to a floating-point color buffer). So invalid premultiplied colors often go unnoticed in GL rendering, or when the window compositor uses GL for composition.
But Android doesn't require that devices with specialized composition hardware (which is nearly all Android devices these days) clamp to 1.0 when blending overflows. Most devices do clamp, but the Exynos 5250 in the Nexus 10 doesn't; it does the blending math in 8-bit fixed-point, and wraps on overflow (0xFF + 0x2 == 0x01). It wouldn't surprise me if the Exynos 4412 in the Note 2 behaves the same way.
To fix this you need to have valid premultiplied colors in your framebuffer at the end of the frame. Many apps, including the Android UI framework, do this by making sure any non-opaque inputs (textures, vertex colors, etc.) are premultiplied -- most of the math just works out automatically after that. If you can't ensure premultiplied inputs, you can just add
gl_FragColor.rgb *= gl_FragColor.a;
to the end of your fragment shaders. If you do any blending, you'll need to adjust the blend equations/factors you use.