Commit d81304839 for imagemagick.org

commit d81304839898726d7bc5d77c4908bf7522ba2ab8
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Fri Sep 25 08:43:18 2026 -0400

    https://github.com/ImageMagick/ImageMagick/issues/8579

diff --git a/MagickCore/composite.c b/MagickCore/composite.c
index 66134af29..42de176ed 100644
--- a/MagickCore/composite.c
+++ b/MagickCore/composite.c
@@ -2939,7 +2939,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
               blend=1.0;
             else
               blend=RoundToUnity(D/S);
-            pixel=(double) QuantumRange*RoundToUnity(Sca*(1.0-Da)+Dca*(1.0-Sa)+
+            pixel=(double) QuantumRange*gamma*RoundToUnity(Sca*(1.0-Da)+Dca*(1.0-Sa)+
               Sa*Da*blend);
             break;
           }
@@ -2954,9 +2954,9 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
                 break;
               }
             if (fabs(Dca) < MagickEpsilon)
-              pixel=(double) QuantumRange*(Sca+(1.0-Sa));
+              pixel=(double) QuantumRange*gamma*(Sca+(1.0-Sa));
             else
-              pixel=(double) QuantumRange*(Sca/Dca+Sca*(1.0-Da)+Dca*(1.0-Sa));
+              pixel=(double) QuantumRange*gamma*(Sca/Dca+Sca*(1.0-Da)+Dca*(1.0-Sa));
             break;
           }
           case DivideSrcCompositeOp:
@@ -2970,9 +2970,9 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
                 break;
               }
             if (fabs(Dca) < MagickEpsilon)
-              pixel=(double) QuantumRange*(Dca+(1.0-Da));
+              pixel=(double) QuantumRange*gamma*(Dca+(1.0-Da));
             else
-              pixel=(double) QuantumRange*(Dca/Sca+Dca*(1.0-Sa)+Sca*(1.0-Da));
+              pixel=(double) QuantumRange*gamma*(Dca/Sca+Dca*(1.0-Sa)+Sca*(1.0-Da));
             break;
           }
           case DstAtopCompositeOp:
@@ -3289,7 +3289,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
                 pixel=(double) QuantumRange*Sc*Dc;
                 break;
               }
-            pixel=(double) QuantumRange*(Sca*Dca+Sca*(1.0-Da)+Dca*(1.0-Sa));
+            pixel=(double) QuantumRange*gamma*(Sca*Dca+Sca*(1.0-Da)+Dca*(1.0-Sa));
             break;
           }
           case NegateCompositeOp:
diff --git a/MagickCore/policy.c b/MagickCore/policy.c
index 5255be795..f5f943b46 100644
--- a/MagickCore/policy.c
+++ b/MagickCore/policy.c
@@ -832,8 +832,8 @@ MagickExport MagickBooleanType IsRightsAuthorizedByName(
       return(MagickTrue);
     }
   /*
-    Evaluate policies in order; last match wins, however, canonical denies are
-    enforced after evaluation.
+    Evaluate policies in order; the last matching lexical or canonical policy
+    wins.
   */
   LockSemaphoreInfo(policy_semaphore);
   ResetLinkedListIterator(policy_cache);
@@ -905,7 +905,7 @@ MagickExport MagickBooleanType IsRightsAuthorizedByName(
     if (matched_canonical != MagickFalse)
       {
         /*
-          If this match was against a canonical form, accumulate allowed rights.
+          If this matched a canonical form, retain the last matching rights.
         */
         canonical_matched_any=MagickTrue;
         canonical_allowed_accumulator=policy->rights;