When converting an 8 bits picture to 16 bits float, Krita changes the image's canvas color parameters, causing bug 340088 to happen. When converting an 16 bits float picture to 8 bits, Krita also changes the image's canvas color, causing visible canvas color deviation. When undoing such changes, Krita cause another kind of canvas color deviation. Reproducible: Always Steps to Reproduce: ____________________________ 8 Bits > 16 Bits Float part 1. Create a 8 bits document 2. Check: Menu > Image > Image Background Color and Transparency (RGBA = 0,0,0,0) 3. Menu > Image > Convert Image Color Space > 16 bit Float 4. Check: Menu > Image > Image Background Color and Transparency (RGBA = 0,0,184,0) If original (RGBA = 255,255,255,0), the result is (RGBA = 195,1,185,0) If original (RGBA = 255,255,255,255), the result is (RGBA = 188,188,188,0) If original (RGBA =0,0,0,255), the result is (RGBA = 0,187,187,0) ____________________________ Bug 340088 related part and workaround 5. Save and reopen the converted document 6. Hide layer 1, draw something on layer 2, yellow border happens 7. Menu > Image > Image Background Color and Transparency, change RGBA to 0,0,0,0 8. Yellow border disappears If set RGBA = 255,255,255,0, the border becomes white. Only when RGBA = 0,0,0,0 it would disappear. ____________________________ 16 Bits to 8 Bits part 1. Create a 16 bits float document with WHITE as canvas color 2. Check: Menu > Image > Image Background Color and Transparency (RGBA = 255,255,255,255) 3. Menu > Image > Convert Image Color Space > 8 bits 4. Check: Menu > Image > Image Background Color and Transparency (RGBA = 0,60,0,60), canvas becomes green and semi-transparent. ____________________________ Undoing part 5. Ctrl + Z to undo the 16 bits to 8 bits conversion 6. Check: Menu > Image > Image Background Color and Transparency (RGBA = 255,255,191,0) Since undoing causes a different kind of canvas color deviation, I'm not sure if this is caused by lcms alone. Since this bug leads to Bug 340088, it is very confusing to people that do a lot of color space conversion, especially for those whom do not know.
Git commit 6a73f69b19ab14bf1ef26acec61d2f70942b861b by Dmitry Kazakov. Committed on 26/12/2014 at 16:03. Pushed by dkazakov into branch 'calligra/2.9'. Convert the default pixel correctly We should call the conversion function from the source color space M +4 -3 krita/image/kis_group_layer.cc http://commits.kde.org/calligra/6a73f69b19ab14bf1ef26acec61d2f70942b861b
Thank you, Dmitry! :)