diff --git a/src/ipa/simple/algorithms/awb.cpp b/src/ipa/simple/algorithms/awb.cpp
index cf567e894..8231a4968 100644
--- a/src/ipa/simple/algorithms/awb.cpp
+++ b/src/ipa/simple/algorithms/awb.cpp
@@ -7,6 +7,7 @@
 
 #include "awb.h"
 
+#include <algorithm>
 #include <numeric>
 #include <stdint.h>
 
@@ -68,10 +69,11 @@ void Awb::process(IPAContext &context,
 	 */
 	const uint64_t nPixels = std::accumulate(
 		histogram.begin(), histogram.end(), 0);
-	const uint64_t offset = blackLevel * nPixels;
-	const uint64_t sumR = stats->sumR_ - offset / 4;
-	const uint64_t sumG = stats->sumG_ - offset / 2;
-	const uint64_t sumB = stats->sumB_ - offset / 4;
+	const int64_t offset = blackLevel * nPixels;
+	const int64_t minValid = 1;
+	const uint64_t sumR = std::max(static_cast<int64_t>(stats->sumR_) - offset / 4, minValid);
+	const uint64_t sumG = std::max(static_cast<int64_t>(stats->sumG_) - offset / 2, minValid);
+	const uint64_t sumB = std::max(static_cast<int64_t>(stats->sumB_) - offset / 4, minValid);
 
 	/*
 	 * Calculate red and blue gains for AWB.
