diff --git a/src/libcamera/shaders/bayer_1x_packed.frag b/src/libcamera/shaders/bayer_1x_packed.frag
index 23747f78a..efc2fec72 100644
--- a/src/libcamera/shaders/bayer_1x_packed.frag
+++ b/src/libcamera/shaders/bayer_1x_packed.frag
@@ -70,6 +70,10 @@ uniform vec3 blacklevel;
 uniform float gamma;
 uniform float contrastExp;
 
+#if defined(DO_LSC)
+uniform sampler2D lsc_tex;
+#endif
+
 float apply_contrast(float value)
 {
 	// Apply simple S-curve
@@ -227,6 +231,10 @@ void main(void)
 
 	rgb = rgb - blacklevel;
 
+	#if defined(DO_LSC)
+	rgb = rgb + rgb * 3.0 * texture2D(lsc_tex, textureOut).rgb;
+	#endif
+
 	/*
 	 *   CCM is a 3x3 in the format
 	 *
diff --git a/src/libcamera/shaders/bayer_unpacked.frag b/src/libcamera/shaders/bayer_unpacked.frag
index 1b85196ae..cc82e656c 100644
--- a/src/libcamera/shaders/bayer_unpacked.frag
+++ b/src/libcamera/shaders/bayer_unpacked.frag
@@ -29,6 +29,10 @@ uniform vec3            blacklevel;
 uniform float           gamma;
 uniform float           contrastExp;
 
+#if defined(DO_LSC)
+uniform sampler2D lsc_tex;
+#endif
+
 float apply_contrast(float value)
 {
     // Apply simple S-curve
@@ -130,6 +134,10 @@ void main(void) {
 
     rgb = rgb - blacklevel;
 
+    #if defined(DO_LSC)
+    rgb = rgb + rgb * 3.0 * texture2D(lsc_tex, center.xy).rgb;
+    #endif
+
     /*
      *   CCM is a 3x3 in the format
      *
