We should really retire sRGB as the standard monitor colourspace and use 16-bit linear floats per channel. Every single image operator gets really tricky if you work in 8-bit sRGB and most don't bother, i.e. they treat 0-255 as linear values and everything from anti-aliasing to blitting to blurring is absolutely broken in all standard desktop applications. It's a bit better if you do 3d rendering with OpenGL/Direct3D, since their entire pipeline is linear and all you have to do is set the "this texture is in sRGB colourspace" bit on every texture and convert the final colour from linear RGB to sRGB in your shader.