diff --git a/src/ipa/simple/algorithms/awb.cpp b/src/ipa/simple/algorithms/awb.cpp
index a391359fb..4d2f1df15 100644
--- a/src/ipa/simple/algorithms/awb.cpp
+++ b/src/ipa/simple/algorithms/awb.cpp
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 /*
- * Copyright (C) 2024, Red Hat Inc.
+ * Copyright (C) 2024-2025 Red Hat Inc.
  *
  * Auto white balance
  */
@@ -40,6 +40,11 @@ void Awb::prepare(IPAContext &context,
 		  [[maybe_unused]] DebayerParams *params)
 {
 	auto &gains = context.activeState.awb.gains;
+	Matrix<float, 3, 3> gainMatrix = { { gains.r(), 0, 0,
+					     0, gains.g(), 0,
+					     0, 0, gains.b() } };
+	context.activeState.combinedMatrix =
+		context.activeState.combinedMatrix * gainMatrix;
 	/* Just report, the gains are applied in LUT algorithm. */
 	frameContext.gains.red = gains.r();
 	frameContext.gains.blue = gains.b();
diff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp
index 25b188b91..a6dbd7b1d 100644
--- a/src/ipa/simple/algorithms/lut.cpp
+++ b/src/ipa/simple/algorithms/lut.cpp
@@ -108,10 +108,7 @@ void Lut::prepare(IPAContext &context,
 			params->blue[i] = gammaTable[static_cast<unsigned int>(lutGains.b())];
 		}
 	} else if (context.activeState.matrixChanged || gammaUpdateNeeded) {
-		Matrix<float, 3, 3> gainMatrix = { { gains.r(), 0, 0,
-						     0, gains.g(), 0,
-						     0, 0, gains.b() } };
-		auto matrix = context.activeState.combinedMatrix * gainMatrix;
+		auto &matrix = context.activeState.combinedMatrix;
 		auto &red = params->redCcm;
 		auto &green = params->greenCcm;
 		auto &blue = params->blueCcm;
