How GL_DITHER works is implementation-defined, and we handle the non-blended case in the pixel shader.
This is because we re-use BlendingState for our internal drawing (e.g. RasterFont) and for these shaders, we can't assume the presence of a second color output.