ICC profile handling when moving app from one display to another?

Krita 5.1.5 on Windows 10:

My display and ICC configuration

The question - does Krita switch ICC profiles when the app is moved from one display to another?

As far as I know, Krita uses the profiles you tell it to use, so if you have set up the correct profiles under ‘‘Settings’’ >> ‘‘Configure Krita’’ >> ‘‘Color Management’’ >> ‘‘Display’’ for each display, you should be able to move your Krita to the one you like when you like and everything should fit. You can even import profiles on that tab in case the manufacturer of your displays provided a profile for their display, or you have calibrated it with a colorimeter and can use its profile.

Maybe some more knowledgeable users can support you with a technically more in depth and correct answer.

Michelist

Thanks for your answer. The general concept is clear and I set everything as needed. But there seems to be an issue with “profile switching” when moving the app from one display to another.

I made further tests and can now better explain my issue:

I intentionally assigned a wrong ICC profile to my Reference-Display. This wrong profile takes care that the image will look very different when the “wrong” profile is used for color management:

I have Krita open on the Reference-Display and open an image. It is obvoius that the “wrong” profile is used. So Krita uses the profile that is assigned in the preferences as expected.

I now move Krita to the Pen-Display. Krita switches to the Pen-Display’s icc profile as expected. So until now everything is good.

But - if I now move Krita back to the Reference-Display it does not switch back to it’s assigned profile. It keeps the one from the Pen-Display. Here seems to be an issue.

1 Like

This is “interesting” and shouldn’t happen, at least not to my understanding, but I’m not the one who knows the technical reasons or problems that seem to be behind this behavior, I lack the technical background knowledge for that.

I can’t give any advice on the following, but my curiosity forces me to ask this. So what I would still be interested in is if this misadjustment survives a restart of Krita or if Krita after restarting then again “displays the correct image”, i.e. matching the ICC profile?

Michelist

After a restart of Krita it loads the profile as expected. The issue only happens when moving to the other display and back to the first display.

If the move from Screen1 to Screen 2 can be detected and responded to, then the move back to Screen 1 should be detected and responded to.
Can you create a formal bug report at https://bugs.kde.org/ (sign up and login needed)
then post a link to the bug report in a reply here?

hi

something is disturbing me

it seems you apply monitor color profile at os level?
if yes, you must not apply it on Krita, otherwise profile will be applied by Krita and by Os (then applied twice)

if you don’t apply monitor color profile at os level and prefer manage it from Krita, if krita doesn’t detect monitor is changed and doesn’t apply expected color profile you may need to open a bug report

Grum999

2 Likes

Good idea but:

I did further tests: As it seems, Krita ignores the Windows Color Management settings.

E.g. I reset Krita’s color managment to default - it uses Elle sRGB then (I did not find a way to disable the color management or set the profiles to none. So, i guess Krita’s display color managment is always active.)

I then set Windows Color Managment to use Kritas linear profile:

I then reopened Krita and loaded the image on Display 1.
Krita did not read the linear profile from Windows but seems to use its own one (the Elle sRGB).

This is what Krita shows:

This is from another app (for this one I know that it only uses the Windows Color Management regarding display profiles):

Conclusion / assumption: Krita ignores Windows Color Management settings but uses its own one.



Next test / information:

I set Krita to use the linear profile for display1 again:

I moved Krita to display2 and back to display1:
Result, like before, Krita is keeping the profile from display2

I then open the menu: [Settings] - [Configure Krita] and immediately after that hit the X button (I did not change any setting):

Now Krita switches to the profile of display1:

So it seems, Krita triggers the profile switch when opening and closing the settings but it does not trigger the switch when moving its GUI back to display1.

Before I open an official bug ticket, could somebody be so kind to crosscheck this? I am new to Krita and don’t want to spam the bugtracker with information that is maybe wrong because I just don’t understand how Krita works.

Regardless of the interaction with system settings, the behaviour of krita is not consistent within itself.
If a formal bug report is made, this will be brought to the attention of the developers who will look at it and examine/investigate it.
If the behaviour is determined to be intentional/unavoidable/not-krita’s-fault then the report will be formally marked as ‘Not A Bug’.

Ok, bug ticket is:
https://bugs.kde.org/show_bug.cgi?id=466068

:thinking:

I don’t use Windows and then don’t have a good experience about how windows works for that (moreover I’m currently on my phone without any computer available before days)
but it sounds strange for me to apply a Krita color profile to monitor, you normally apply a dedicated color profile for monitor

On my side, I let the OS (Linux) manage the color icc profile for monitors

without color profile applied, my both monitors have different color rendering
with color profile applied (made with color calibration probe), both monitors display the same colors, whatever the application is used (krita, firefox, or any other applications)
then I let Krita on srgb profile that is the best option to use

if you can do the same on windows, it’s probably the best option.

Grum999

@Grum999
Yes, sure. Using a color space profile in display settings is “wrong”.
But as I mentioned it, in my case I did this intentionally to force an obvious difference in the image. If I use my “real” monitor profiles, the images are so similar that I was not sure if there is really something wrong with the profile switching.

The bug was confirmed.

Workaround:
Use shortcut combo to switch displays:
Windows-key + shift + right / left arrow key to move Krita from display to display.
In that case profile switching works.

If moving by drag and drop with mouse the bug happens as described.

The issue is that the screen change event is fired when the main window starts to, and then crosses halfway, to the other screen. However, the actual check for screen position was done relative to the canvas widget. This means that if you have the dockers open, and those make the canvas be towards the left of your screen, the event handling will reply (correctly) that the canvas is still in the original screen, causing the profile management to ignore the change.

Fix is here: https://invent.kde.org/graphics/krita/commit/d01231403e5af8cc34c380ed50da50169db67001 and it will start shipping in tonight’s nightly builds of the master branch.

4 Likes

Thanks for letting us know.

One more question:

I normally do not move the whole UI but the detached canvas [View]-[Detach Canvas].
(this is how am used to do it in Affinity Photo).

But in this case no profile switching happens at all. As I know understand it, this is the intended behaviour, right?

Perfect would be, if one could create two views of the same open document. One view is on the pen display, the other on the reference display. The profiles are used according to on which display the actual view is. So I could be drawing on the pen dispaly and see the “real” colors on the reference display because the linked view on that one gets updated according to the one on the pen display.

But I think this should be a feature request ?

Update (in case somebody else needs an “image on two displays” solution):
When I started to use Krita, I could not find a way to have the same image on both displays at the same time. That’s the reason I thought I need to move the whole UI from display to display to check colors.

But I learned that there is a solution, which was just not obvious to me:

  1. open Krita
  2. load image
  3. Menu [Window]-[New Window] - this opens a new empty Krita instance
  4. Move the new Krita instance to the other display
  5. Menu [Window]-[New View] in this empty Krita and select the already open file

As result the image already open in the first instance of Krita is now also shown in the second instance of Krita. This “new view” is linked to the first one. So any edit, brush stroke etc. done in Krita1 appears in Krita2 as well. And because the whole Krita2 UI is on the other display, the correct ICC profile is used. Therefore my previous post is obsolete, because there is already a solution.

1 Like

You can mark it as a solution so that people will know which post is the solution.

Thanks - done right now.

1 Like

This topic was automatically closed 4 days after the last reply. New replies are no longer allowed.