diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 2e02a352c..79bd81c65 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -4778,13 +4778,22 @@ void ImProcFunctions::chromiLuminanceCurve(PipetteBuffer *pipetteBuffer, int pW, histLCurve[Lprov1 * histLFactor]++; } - Chprov1 = sqrt(SQR(atmp) + SQR(btmp)) / 327.68f; // labCurve.bwtoning option allows to decouple modulation of a & b curves by saturation // with bwtoning enabled the net effect of a & b curves is visible if (bwToning) { atmp -= lold->a[i][j]; btmp -= lold->b[i][j]; + Chprov1 = sqrt(SQR(atmp) + SQR(btmp)) / 327.68f; + if (Chprov1 == 0.f) { + sincosval.x = 0.f; + sincosval.y = 1.f; + } else { + sincosval.x = btmp / (327.68f * Chprov1); + sincosval.y = atmp / (327.68f * Chprov1); + } + } else { + Chprov1 = sqrt(SQR(atmp) + SQR(btmp)) / 327.68f; } lnew->L[i][j] = Lprov1 * 327.68f;