Bug 340947

Summary: Conversion between 8 bits and 16 bits float causes canvas background color deviation
Product: [Applications] krita Reporter: Tyson Tan <tysontanx>
Component: Color modelsAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: git master (please specify the git hash!)   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:

Description Tyson Tan 2014-11-14 07:57:59 UTC
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.
Comment 1 Dmitry Kazakov 2014-12-26 17:05:43 UTC
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
Comment 2 Tyson Tan 2014-12-29 04:30:26 UTC
Thank you, Dmitry! :)