diff --git a/src/libcamera/shaders/bayer_1x_packed.frag b/src/libcamera/shaders/bayer_1x_packed.frag
index 90bd64570..c0632eb1f 100644
--- a/src/libcamera/shaders/bayer_1x_packed.frag
+++ b/src/libcamera/shaders/bayer_1x_packed.frag
@@ -268,5 +268,9 @@ void main(void)
 	rgb.b = texture2D(blue_param, vec2(rgb.b, 0.5)).b;
 #endif
 
+#if defined (SWAP_BLUE)
+	gl_FragColor = vec4(rgb.bgr, 1.0);
+#else
 	gl_FragColor = vec4(rgb, 1.0);
+#endif
 }
diff --git a/src/libcamera/shaders/bayer_unpacked.frag b/src/libcamera/shaders/bayer_unpacked.frag
index 924c477de..a9996b94e 100644
--- a/src/libcamera/shaders/bayer_unpacked.frag
+++ b/src/libcamera/shaders/bayer_unpacked.frag
@@ -163,5 +163,9 @@ void main(void) {
         rgb.b = texture2D(blue_param, vec2(rgb.b, 0.5)).b;
 #endif
 
-    gl_FragColor.rgb = rgb;
+#if defined (SWAP_BLUE)
+        gl_FragColor = vec4(rgb.bgr, 1.0);
+#else
+        gl_FragColor = vec4(rgb, 1.0);
+#endif
 }
