Wrong color space on an external display when playing SDR games with the HDR toggle set to ON
Your system information
- Steam client version: 1748914100
- SteamOS version: 3.7.8 Stable 20250522.2
- Opted into Steam client beta?: No
- Opted into SteamOS beta?: No
- Have you checked for updates in Settings > System?: Yes
Please describe your issue in as much detail as possible:
Context: Steam Deck OLED connected to an external display, capable of HDR, via HDMI dock is being used as a Moonlight streaming client (Moonlight assumingly is not a culprit here, I will come back to this later). Capturing screenshots for an illustration is quite difficult, or rather impossible, since “Color Vibrance” does not affect screenshots and Steam Deck is not capable of capturing HDR screenshots, but I found an issue with suitable photos illustrating the aforementioned problem just fine in my case.
- Moonlight is streaming SDR content, and the Steam Deck's HDR toggle is set to OFF. Everything looks totally fine. ✅
- Moonlight is streaming HDR content, and the Steam Deck's HDR toggle is set to ON. Everything looks totally fine. ✅
- Moonlight is streaming SDR content, and the Steam Deck's HDR toggle is set to ON. Here is where it goes wrong. ❌
Everything below is based only on my personal experience, research, and observations, since I am not a verified color expert.
SDR games render in the BT.709 color space, whereas HDR games use BT.2020. Thus, the external monitor nonetheless treats incoming “forced” HDR as BT.2020, while in fact it should be BT.709. Since BT.2020 is wider than the BT.709 color space, one can observe so-called “oversaturated” colors. Thankfully, my LG TV is capable of HDMI signalling override, which lets me do some tinkering. If I set colorimetry to BT.709 (or should it be BT.601? The difference between them is quite subtle), the colors roll back to normal. Once I set colorimetry to BT.2020 (or P3 D65 — the difference between the two is invisible to the naked eye), colors are again oversaturated.
An unfortunate side effect of this trick is that native HDR games, on the other hand, become washed out (or, some may say, undersaturated), so it is more of a workaround than a silver bullet.
Important — SteamOS UI is also affected, e.g., Xbox controller button A (Select) by default has a slight yellow tint, the same goes for button B (Back). With the HDR toggle set to ON the button A gets a toxic green look, while the button B becomes pure red. Setting colorimetry to BT.709 rolls back both buttons (and overall SteamOS appearance) to normal. That's why I think this is a system-level issue and has nothing to do with Moonlight.
You reasonably may wonder, “Why would you bother? Just play in SDR, and that is it.” Well, yes and no. Some TVs and monitors are capable of their peak brightness only in the HDR mode, and SDR looks just too dim. Once you get those extra nits, you do not want to miss them anymore.
Some side observations that may be helpful:
- While looking for the perfect Moonlight client, I stumbled upon Apple TV 4K. It had the opposite problem — SDR games with HDR active were washed out. I tried tinkering with the source code. Here I added
_streamConfig.colorSpace = COLORSPACE_REC_709;and made a custom build. With only a single line of code, SDR games became fine, while HDR games were not affected at all, i.e., both SDR and HDR games looked fine simultaneously without any fuss. - PS5 is also capable of “always HDR” mode, and it manages pretty well. SDR-only games on the Steam Deck with colorimetry set to BT.709 on my LG TV look exactly like they do on PS5.
In case I discover something new, I will surely share it in this thread.
Any updates or developments on this? I can confirm I'm having the exact same situation on my LG C1 TV Having to manually toggle a different (and hidden) color space setting on my TV is such a turn off from using gamescope session in any distro.
Is anyone actively working on fixing the problem, or will it be a very long waiting game till it's eventually fixed?
same issue on a sony X90L with both steam deck oled running latest stable steamos. Sort of related, I run into this as well with bazzite on my htpc when booted into gamescope-session
because this also happens on bazzite, not just steamos, do you think its an issue with gamescope instead? would it make more sense to make this issue here instead? https://github.com/ValveSoftware/gamescope
I can confirm it also happens in CachyOS, so, yes, it's a gamescope-session / gamescope issue
@cchulo, @SerjTargarien, interesting! Can you confirm that this bug also affects your OS UI, not just games?
I can confirm it also affects the UI.
Then it is about time I created a new issue in the gamescope repo. I am only afraid that I am sort of a fledgling when it comes to Linux, Wayland, and all that stuff.
Then it is about time I created a new issue in the gamescope repo. I am only afraid that I am sort of a fledgling when it comes to Linux, Wayland, and all that stuff.
all good :) i actually thought the colors looked off for almost an entire year and then i booted into windows with calibrated HDR. I went back to bazzite and i thought something was wrong, then i found your issue. Appreciate you articulating this issue, i didn't even know how to put this issue into words, I am not a color expert, was afraid of posting an issue that simply read "the reds are too red"
Wow, great! Thank you, @kisak-valve
after a bit of tinkering, switching back and forth from windows, i think i solved my problem on sony X90L, i have to set hdmi video signal to use full rgb, and even with HDR enabled, SDR seems to now be in the correct color space, for me anyway. I am using a cablematters dongle to convert DP to HDMI 2.1 to get 4k@120
Tried to fix it with an equivalent setting in my LG C1 (it appears in this TV you have to go to the HDMI inputs screen and set the specific input to "PC"). It's not fixed. Seems like something that should be fixed sending the correct information via the HDMI cable from the computer instead of tinkering with the TV, as other devices (consoles and windows PCs) can take care of it automatically.
@cchulo
i have to set hdmi video signal to use full rgb,
Just to clarify (since different TV brands call the same settings differently), do you mean black level (limited 16-235 and full RGB 0-255) or chroma subsampling (4:2:2, 4:4:4)?
And, well, neither of those settings can affect color space. Black level mismatch may result in the wrong contrast level, and chroma subsampling impacts picture clarity.
Nonetheless, I will tinker with those settings as well.
@SerjTargarien in my case, I am using a dongle, which i worry is messing with the signal the TV is receiving. Are you using any dongles on your end.
@sew700 I think it is full rgb here is what the setting reads under the video signal section in my sony tv
I think it is full rgb here is what the setting reads
A video from HDTVTest regarding this setting. (On LG TVs it used to be "black level", but nowadays it is also "video range")
It cannot affect color space. AFAIK, Steam Deck outputs a full RGB range, and due to DP->HDMI conversion, your TV may choose the wrong video range if set to auto. Thus, you may have to set it to full manually.
No dongle on my end. Just a short HDMI 2.1 cable.
No dongle on my end. Just a short HDMI 2.1 cable.
Ouch, I always forget that there are other distros with gamescope. But nonetheless, video range and color space are different things.
The problem is still present on the fresh Steam Deck OLED update.
- Steam client version: 1751405894
- SteamOS version: 3.7.13 Stable 20250630.1
The problem is still present on the fresh Steam Deck OLED update.
- Steam client version: 1751405894
- SteamOS version: 3.7.13 Stable 20250630.1
Same. Pesent my end too. Connected to TCL C805 TV. When docked, HDR is oversatured and blacks are crushed, only applicable to OLED Steam Deck.
I think it is full rgb here is what the setting reads
A video from HDTVTest regarding this setting. (On LG TVs it used to be "black level", but nowadays it is also "video range")
It cannot affect color space. AFAIK, Steam Deck outputs a full RGB range, and due to DP->HDMI conversion, your TV may choose the wrong video range if set to auto. Thus, you may have to set it to full manually.
what i meant is setting TV to full fixed crushing blacks. Colors are still oversaturated for me unless i also modify the color profile to the appropriate one for SDR content
i think i can live with oversaturated colors, its crushing blacks that was preventing me from playing dark games
ah stumbled on this thread
my 6950XT powered SteamOS machine is running fine on my C1 Oled but when i hook it up to my TK700sti projector it has a green tint. like explained here. i was searching for a solution (forcing edid to 10bit.. perhaps) i hope this will be fixed soon for now i just swap HDR off when i play a SDR game