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 inline T cfHardMix(T src, T dst) { - return (dst > Arithmetic::halfValue()) ? cfColorDodge(src,dst) : cfColorBurn(src,dst); + using namespace Arithmetic; + typedef typename KoColorSpaceMathsTraits::compositetype composite_type; + + const composite_type sum = composite_type(src) + dst; + + return sum >= unitValue() ? unitValue() : zeroValue(); } template