diff --git a/libs/pigment/compositeops/KoCompositeOpFunctions.h b/libs/pigment/compositeops/KoCompositeOpFunctions.h
index 475084c..9ddbd46 100644
--- a/libs/pigment/compositeops/KoCompositeOpFunctions.h
+++ b/libs/pigment/compositeops/KoCompositeOpFunctions.h
@@ -375,7 +375,12 @@ inline T cfGrainExtract(T src, T dst) {
template<class T>
inline T cfHardMix(T src, T dst) {
- return (dst > Arithmetic::halfValue<T>()) ? cfColorDodge(src,dst) : cfColorBurn(src,dst);
+ using namespace Arithmetic;
+ typedef typename KoColorSpaceMathsTraits<T>::compositetype composite_type;
+
+ const composite_type sum = composite_type(src) + dst;
+
+ return sum >= unitValue<T>() ? unitValue<T>() : zeroValue<T>();
}
template<class T>