...
diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c
index 634d15c..7b8cb03 100644
--- a/MagickCore/quantize.c
+++ b/MagickCore/quantize.c
@@ -2400,7 +2400,7 @@
static inline double KmeansMetric(const Image *magick_restrict image,
const Quantum *magick_restrict p,const PixelInfo *magick_restrict q)
{
- double
+ register double
gamma,
metric,
pixel;
@@ -2410,18 +2410,17 @@
if ((image->alpha_trait != UndefinedPixelTrait) ||
(q->alpha_trait != UndefinedPixelTrait))
{
- double
- alpha;
-
- alpha=q->alpha_trait != UndefinedPixelTrait ? q->alpha : OpaqueAlpha;
- pixel=QuantumScale*(GetPixelAlpha(image,p)-alpha);
+ pixel=GetPixelAlpha(image,p)-(q->alpha_trait != UndefinedPixelTrait ?
+ q->alpha : OpaqueAlpha);
metric+=pixel*pixel;
- gamma*=QuantumScale*GetPixelAlpha(image,p);
- gamma*=QuantumScale*alpha;
+ if (image->alpha_trait != UndefinedPixelTrait)
+ gamma*=QuantumScale*GetPixelAlpha(image,p);
+ if (q->alpha_trait != UndefinedPixelTrait)
+ gamma*=QuantumScale*q->alpha;
}
if (image->colorspace == CMYKColorspace)
{
- pixel=QuantumScale*(GetPixelBlack(image,p)-q->black);
+ pixel=GetPixelBlack(image,p)-q->black;
metric+=gamma*pixel*pixel;
gamma*=QuantumScale*(QuantumRange-GetPixelBlack(image,p));
gamma*=QuantumScale*(QuantumRange-q->black);