From b3c124fe7a00481310e69f14913767d339500540 Mon Sep 17 00:00:00 2001 From: Mike Solar Date: Mon, 13 Jul 2026 00:49:46 +0800 Subject: [PATCH] Default viewer display transform to config display/view instead of input colorspace When no explicit color transform was set, ManagedDisplayWidget fell back to the project's default input colorspace. For scene-referred reference spaces like ACEScg / Linear this produced a raw, greenish image on the viewer instead of a monitor-ready picture. Default to the OCIO config's default display and view so the viewer looks correct out of the box, while still honoring any Color Space / Display / View choice the user makes from the context menu. --- app/widget/manageddisplay/manageddisplay.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/widget/manageddisplay/manageddisplay.cpp b/app/widget/manageddisplay/manageddisplay.cpp index df58e6d88..e9cc311db 100644 --- a/app/widget/manageddisplay/manageddisplay.cpp +++ b/app/widget/manageddisplay/manageddisplay.cpp @@ -188,8 +188,20 @@ void ManagedDisplayWidget::ColorConfigChanged() return; } - SetColorTransform( - color_manager_->GetCompliantColorSpace(color_transform_, false)); + // When no explicit transform has been chosen, default to the config's + // display/view transform so the viewer shows a sensible image. Otherwise + // an empty transform falls back to the project's default input colorspace, + // which is usually a scene-referred space (e.g. ACEScg / Linear) and makes + // the picture look raw/wrong on a monitor. + if (color_transform_.output().isEmpty()) { + QString display = color_manager_->GetDefaultDisplay(); + QString view = color_manager_->GetDefaultView(display); + SetColorTransform(color_manager_->GetCompliantColorSpace( + ColorTransform(display, view, QString()), true)); + } else { + SetColorTransform( + color_manager_->GetCompliantColorSpace(color_transform_, false)); + } } ColorProcessorPtr ManagedDisplayWidget::color_service()