i have never understood why applications need to care about colour management, surely it could all be done by the graphics driver.
i have an image file where each pixel is given by a red, blue and green component, and a standard that says what a give combination or r, g and b should look like (sRGB). so if my pixel is 'lwn orange' #FFCE9C, it could be well defined what this should look like.
now my image viewer tells the X server to paint the pixel #FFCE9C, X passes this value the graphic driver, and the graphics driver figures out what signal need to be sent down my dvi/vga cable to show the colour.
if its the application doing the translation, then what happens if i take a screen shot? also what happens if the application window is spread across 2 monitors?