diff --git a/src/ipa/simple/algorithms/awb.cpp b/src/ipa/simple/algorithms/awb.cpp
index 195de41d..f4fe1af6 100644
--- a/src/ipa/simple/algorithms/awb.cpp
+++ b/src/ipa/simple/algorithms/awb.cpp
@@ -12,6 +12,7 @@
 
 #include <libcamera/base/log.h>
 
+#include "libipa/colours.h"
 #include "simple/ipa_context.h"
 
 namespace libcamera {
@@ -23,7 +24,7 @@ namespace ipa::soft::algorithms {
 int Awb::configure(IPAContext &context,
 		   [[maybe_unused]] const IPAConfigInfo &configInfo)
 {
-	auto &gains = context.activeState.gains;
+	auto &gains = context.activeState.awb.gains;
 	gains.red = gains.green = gains.blue = 1.0;
 
 	return 0;
@@ -54,12 +55,18 @@ void Awb::process(IPAContext &context,
 	 * Calculate red and blue gains for AWB.
 	 * Clamp max gain at 4.0, this also avoids 0 division.
 	 */
-	auto &gains = context.activeState.gains;
+	auto &gains = context.activeState.awb.gains;
 	gains.red = sumR <= sumG / 4 ? 4.0 : static_cast<double>(sumG) / sumR;
 	gains.blue = sumB <= sumG / 4 ? 4.0 : static_cast<double>(sumG) / sumB;
 	/* Green gain is fixed to 1.0 */
 
-	LOG(IPASoftAwb, Debug) << "gain R/B " << gains.red << "/" << gains.blue;
+	RGB<double> rgbGains{ { 1 / gains.red, 1 / gains.green, 1 / gains.blue } };
+	uint32_t temperature = estimateCCT(rgbGains);
+	context.activeState.awb.temperatureK = temperature;
+
+	LOG(IPASoftAwb, Debug)
+		<< "gain R/B: " << gains.red << "/" << gains.blue
+		<< "; temperature: " << context.activeState.awb.temperatureK;
 }
 
 REGISTER_IPA_ALGORITHM(Awb, "Awb")
diff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp
index 0ba2391f..d75ff710 100644
--- a/src/ipa/simple/algorithms/lut.cpp
+++ b/src/ipa/simple/algorithms/lut.cpp
@@ -95,7 +95,7 @@ void Lut::prepare(IPAContext &context,
 	    context.activeState.gamma.contrast != context.activeState.knobs.contrast)
 		updateGammaTable(context);
 
-	auto &gains = context.activeState.gains;
+	auto &gains = context.activeState.awb.gains;
 	auto &gammaTable = context.activeState.gamma.gammaTable;
 	const unsigned int gammaTableSize = gammaTable.size();
 
diff --git a/src/ipa/simple/ipa_context.h b/src/ipa/simple/ipa_context.h
index 4af51306..607af45a 100644
--- a/src/ipa/simple/ipa_context.h
+++ b/src/ipa/simple/ipa_context.h
@@ -36,10 +36,13 @@ struct IPAActiveState {
 	} blc;
 
 	struct {
-		double red;
-		double green;
-		double blue;
-	} gains;
+		struct {
+			double red;
+			double green;
+			double blue;
+		} gains;
+		unsigned int temperatureK;
+	} awb;
 
 	static constexpr unsigned int kGammaLookupSize = 1024;
 	struct {
