The previous implementation added noise in linear space, which resulted in the effect becoming more pronounced on black backgrounds. This patch changes the process to be applied in perceptual space, by making the noise addition pass a separate draw call and disabling GL_FRAMEBUFFER_SRGB during that.
After this change, noise will look much more suppressed and almost never grainy. This change also changes the range of the noise from [-strength..strength) to [0..strength), as blending can only be either additive or subtractive. As a result, users might need to ramp up their noise parameter after this change.