diff --git a/QSVPipeline/rgy_filter_colorspace.cpp b/QSVPipeline/rgy_filter_colorspace.cpp
index 6962b172..fdd49af9 100644
--- a/QSVPipeline/rgy_filter_colorspace.cpp
+++ b/QSVPipeline/rgy_filter_colorspace.cpp
@@ -1451,7 +1451,16 @@ RGY_ERR ColorspaceOpCtrl::setHDR2SDR(const VideoVUIInfo &in, const VideoVUIInfo
     if (csp_to2.matrix == RGY_MATRIX_UNSPECIFIED) {
         csp_to2 = csp_to2.to(RGY_MATRIX_BT709).to(RGY_TRANSFER_BT709).to(RGY_PRIM_BT709);
     }
-    const auto csp_from2 = csp_to2.to(RGY_PRIM_BT2020).to(RGY_TRANSFER_LINEAR).to(RGY_MATRIX_RGB);
+    auto csp_from2 = csp_to1;
+    if (csp_from2.matrix == RGY_MATRIX_UNSPECIFIED) {
+        csp_from2 = csp_from2.to(RGY_MATRIX_RGB);
+    }
+    if (csp_from2.transfer == RGY_TRANSFER_UNSPECIFIED) {
+        csp_from2 = csp_from2.to(RGY_TRANSFER_LINEAR);
+    }
+    if (csp_from2.transfer == RGY_PRIM_UNSPECIFIED) {
+        csp_from2 = csp_from2.to(RGY_PRIM_BT2020);
+    }
     CHECK(setPath(csp_from2, csp_to2, sdr_source_peak, approx_gamma, scene_ref, height));
     return RGY_ERR_NONE;
 }