diff --git a/src/render/mod.rs b/src/render/mod.rs
index 3bb49d8a620c1d5a997cffa058d2fb0f9de9afed..c87111e745b35e8cfba43c9edea5382903ed9eb4 100644
--- a/src/render/mod.rs
+++ b/src/render/mod.rs
@@ -156,7 +156,7 @@ pub fn update_opacity_layer_cameras(
                 WindowRef::Primary => primary_window.get_single().unwrap(),
             };
             if let Ok(camera_window) = windows.get(window_entity) {
-                opacity_layers.add_or_update(&camera_entity, camera_window, &mut images);
+                opacity_layers.add_or_update(&camera_entity, &camera, camera_window, &mut images);
             }
         }
     }
diff --git a/src/render/opacity_layer.rs b/src/render/opacity_layer.rs
index aa96efa7b6cbd17d2776c83582bdf2fff5386bbb..1a3be5d847f50b7cc54f5091db3780cebc7b9d92 100644
--- a/src/render/opacity_layer.rs
+++ b/src/render/opacity_layer.rs
@@ -7,6 +7,7 @@ use bevy::{
             TextureView,
         },
         texture::BevyDefault,
+        view::ViewTarget,
     },
     utils::HashMap,
     window::Window,
@@ -22,14 +23,15 @@ impl OpacityLayerManager {
     pub(crate) fn add_or_update(
         &mut self,
         camera_entity: &Entity,
+        camera: &Camera,
         window: &Window,
         images: &mut Assets<Image>,
     ) {
         if let Some(opacity_camera) = self.camera_layers.get_mut(camera_entity) {
-            opacity_camera.update_images(window, images);
+            opacity_camera.update_images(window, camera, images);
         } else {
             self.camera_layers
-                .insert(*camera_entity, OpacityCamera::new(window, images));
+                .insert(*camera_entity, OpacityCamera::new(window, camera, images));
         }
     }
 }
@@ -44,8 +46,12 @@ pub const MAX_OPACITY_LAYERS: u32 = 5;
 
 impl OpacityCamera {
     /// Creates as new opacity layer render target manager
-    pub(crate) fn new(window: &Window, images: &mut Assets<Image>) -> Self {
-        let main_texture_format = TextureFormat::bevy_default();
+    pub(crate) fn new(window: &Window, camera: &Camera, images: &mut Assets<Image>) -> Self {
+        let main_texture_format = if camera.hdr {
+            ViewTarget::TEXTURE_FORMAT_HDR
+        } else {
+            TextureFormat::bevy_default()
+        };
 
         let mut layers = HashMap::default();
         for layer in 1..MAX_OPACITY_LAYERS {
@@ -82,8 +88,17 @@ impl OpacityCamera {
         }
     }
 
-    pub(crate) fn update_images(&mut self, window: &Window, images: &mut Assets<Image>) {
-        let main_texture_format = TextureFormat::bevy_default();
+    pub(crate) fn update_images(
+        &mut self,
+        window: &Window,
+        camera: &Camera,
+        images: &mut Assets<Image>,
+    ) {
+        let main_texture_format = if camera.hdr {
+            ViewTarget::TEXTURE_FORMAT_HDR
+        } else {
+            TextureFormat::bevy_default()
+        };
 
         let new_size = Extent3d {
             width: window.resolution.physical_width(),