diff --git a/res/dpr/utility/encode_color_conversion.frag b/res/dpr/utility/encode_color_conversion.frag
index 7e39b74b8929e86ff2476a022dcda5d302685c49..9125d168879650d312f8b721cf9e1cf868322bc4 100644
--- a/res/dpr/utility/encode_color_conversion.frag
+++ b/res/dpr/utility/encode_color_conversion.frag
@@ -15,13 +15,19 @@ void main()
         vec3(0.114, 0.436, -0.10001) //third column
     );
 
+    float gamma = 2.2;
+    float u_max = 0.436;
+    float v_max = 0.615;
+
     int height = textureSize(samplerInput, 0).y;
     ivec2 coord = ivec2(gl_FragCoord.xy);
     coord.y = height - coord.y;
 
-    vec3 color_rgb = texelFetch(samplerInput, coord, 0).xyz;
-    vec3 color_yuv = convert_matrix * color_rgb;
+    vec3 color_rgb_linear = texelFetch(samplerInput, coord, 0).xyz;
+    vec3 color_rgb_gamma = pow(color_rgb_linear, vec3(1.0 / gamma)); //Slight change in brighness when compared to emulated headset. Maybe due to different gamma compression when using sRGB.
+    vec3 color_yuv = convert_matrix * color_rgb_gamma;
 
     outLuma = color_yuv.x;
-    outChroma = color_yuv.yz + 0.5;
+    outChroma.x = ((color_yuv.y / u_max) + 1.0) / 2.0;
+    outChroma.y = ((color_yuv.z / v_max) + 1.0) / 2.0;
 }
diff --git a/src/headset/emulated_headset.cpp b/src/headset/emulated_headset.cpp
index cff8020b9903566b37b5f96a527661840287d812..f5d0bd76eb2020f93891f6829d6e85f138a6ba75 100644
--- a/src/headset/emulated_headset.cpp
+++ b/src/headset/emulated_headset.cpp
@@ -142,6 +142,19 @@ void EmulatedHeadset::submit_frame(VkCommandBuffer command_buffer, VkImageLayout
 
 VkFormat EmulatedHeadset::get_format() const
 {
+    switch (this->get_application()->get_target()->get_format())
+    {
+    case VK_FORMAT_B8G8R8A8_UNORM:
+    case VK_FORMAT_B8G8R8A8_SRGB:
+        return VK_FORMAT_B8G8R8A8_SRGB;
+    case VK_FORMAT_R8G8B8A8_UNORM:
+    case VK_FORMAT_R8G8B8A8_SRGB:
+        return VK_FORMAT_R8G8B8A8_SRGB;
+    default:
+        lava::log()->warn("Can't derive correct sRGB color format for headset framebuffer!");
+        break;
+    }
+
     return this->get_application()->get_target()->get_format();
 }
 
diff --git a/src/scene.hpp b/src/scene.hpp
index c746abfd28d7e0aadc403bf6b07eddb5630510ba..1e490fef3890aae0aee8a958e56c61714cd76ba2 100644
--- a/src/scene.hpp
+++ b/src/scene.hpp
@@ -216,7 +216,7 @@ private:
     glm::vec3 scene_min = glm::vec3(0.0f);
     glm::vec3 scene_max = glm::vec3(0.0f);
 
-    const glm::vec3 ambient_color = glm::vec3(5.0f); //NOTE: This factor is used so that the Bistro scene looks okay.
+    const glm::vec3 ambient_color = glm::vec3(0.5f); //NOTE: This factor is used so that the Bistro scene looks okay.
     float exposure = 0.1f;                           //NOTE: This factor is used so that the Bistro scene looks okay.
     bool exposure_changed = false;
 
diff --git a/src/utility/companion_window.cpp b/src/utility/companion_window.cpp
index e959cfd8d9771765fe5e509f598eaedee1702502..86ab73a926f1df4eb155f5126f3958b4b4e82e32 100644
--- a/src/utility/companion_window.cpp
+++ b/src/utility/companion_window.cpp
@@ -2,7 +2,24 @@
 
 bool CompanionWindow::create(lava::device_ptr device, lava::render_target::ptr target)
 {
-    this->framebuffer = lava::make_image(target->get_format(), device, target->get_size());
+    VkFormat format = target->get_format();
+
+    switch (format)
+    {
+    case VK_FORMAT_B8G8R8A8_UNORM:
+    case VK_FORMAT_B8G8R8A8_SRGB:
+        format = VK_FORMAT_B8G8R8A8_SRGB;
+        break;
+    case VK_FORMAT_R8G8B8A8_UNORM:
+    case VK_FORMAT_R8G8B8A8_SRGB:
+        format = VK_FORMAT_R8G8B8A8_SRGB;
+        break;
+    default:
+        lava::log()->warn("Can't derive correct sRGB color format for companion window!");
+        break;
+    }
+
+    this->framebuffer = lava::make_image(format, device, target->get_size());
 
     if (this->framebuffer == nullptr)
     {