diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c
index aaaff78..5d8b38e 100644
--- a/MagickCore/quantize.c
+++ b/MagickCore/quantize.c
@@ -480,7 +480,7 @@
 static inline Quantum ClampPixel(const MagickRealType value)
 {
   if (value < 0.0f)
-    return(0.0f);
+    return(0);
   if (value >= (MagickRealType) QuantumRange)
     return((Quantum) QuantumRange);
 #if !defined(MAGICKCORE_HDRI_SUPPORT)
@@ -892,11 +892,12 @@
         Sum RGB for this leaf for later derivation of the mean cube color.
       */
       node_info->number_unique+=count;
-      node_info->total_color.red+=count*QuantumScale*pixel.red;
-      node_info->total_color.green+=count*QuantumScale*pixel.green;
-      node_info->total_color.blue+=count*QuantumScale*pixel.blue;
+      node_info->total_color.red+=count*QuantumScale*ClampPixel(pixel.red);
+      node_info->total_color.green+=count*QuantumScale*ClampPixel(pixel.green);
+      node_info->total_color.blue+=count*QuantumScale*ClampPixel(pixel.blue);
       if (cube_info->associate_alpha != MagickFalse)
-        node_info->total_color.alpha+=count*QuantumScale*pixel.alpha;
+        node_info->total_color.alpha+=count*QuantumScale*
+          ClampPixel(pixel.alpha);
       p+=count*GetPixelChannels(image);
     }
     if (cube_info->colors > cube_info->maximum_colors)
@@ -987,11 +988,12 @@
         Sum RGB for this leaf for later derivation of the mean cube color.
       */
       node_info->number_unique+=count;
-      node_info->total_color.red+=count*QuantumScale*pixel.red;
-      node_info->total_color.green+=count*QuantumScale*pixel.green;
-      node_info->total_color.blue+=count*QuantumScale*pixel.blue;
+      node_info->total_color.red+=count*QuantumScale*ClampPixel(pixel.red);
+      node_info->total_color.green+=count*QuantumScale*ClampPixel(pixel.green);
+      node_info->total_color.blue+=count*QuantumScale*ClampPixel(pixel.blue);
       if (cube_info->associate_alpha != MagickFalse)
-        node_info->total_color.alpha+=count*QuantumScale*pixel.alpha;
+        node_info->total_color.alpha+=count*QuantumScale*
+          ClampPixel(pixel.alpha);
       p+=count*GetPixelChannels(image);
     }
     proceed=SetImageProgress(image,ClassifyImageTag,(MagickOffsetType) y,
@@ -1256,30 +1258,29 @@
       alpha=PerceptibleReciprocal(alpha);
       if (cube_info->associate_alpha == MagickFalse)
         {
-          q->red=(double) ClampToQuantum(ClampPixel(alpha*QuantumRange*
-            node_info->total_color.red));
-          q->green=(double) ClampToQuantum(ClampPixel(alpha*QuantumRange*
-            node_info->total_color.green));
-          q->blue=(double) ClampToQuantum(ClampPixel(alpha*QuantumRange*
-            node_info->total_color.blue));
-          q->alpha=OpaqueAlpha;
+          q->red=(double) ClampToQuantum(alpha*QuantumRange*
+            node_info->total_color.red);
+          q->green=(double) ClampToQuantum(alpha*QuantumRange*
+            node_info->total_color.green);
+          q->blue=(double) ClampToQuantum(alpha*QuantumRange*
+            node_info->total_color.blue);
+          q->alpha=(double) OpaqueAlpha;
         }
       else
         {
           double
             opacity;
 
-          opacity=(double) (alpha*QuantumRange*
-            node_info->total_color.alpha);
-          q->alpha=(double) ClampToQuantum(ClampPixel(opacity));
+          opacity=(double) (alpha*QuantumRange*node_info->total_color.alpha);
+          q->alpha=(double) ClampToQuantum((opacity));
           if (q->alpha == OpaqueAlpha)
             {
-              q->red=(double) ClampToQuantum(ClampPixel(alpha*QuantumRange*
-                node_info->total_color.red));
-              q->green=(double) ClampToQuantum(ClampPixel(alpha*QuantumRange*
-                node_info->total_color.green));
-              q->blue=(double) ClampToQuantum(ClampPixel(alpha*QuantumRange*
-                node_info->total_color.blue));
+              q->red=(double) ClampToQuantum(alpha*QuantumRange*
+                node_info->total_color.red);
+              q->green=(double) ClampToQuantum(alpha*QuantumRange*
+                node_info->total_color.green);
+              q->blue=(double) ClampToQuantum(alpha*QuantumRange*
+                node_info->total_color.blue);
             }
           else
             {
@@ -1288,12 +1289,12 @@
 
               gamma=(double) (QuantumScale*q->alpha);
               gamma=PerceptibleReciprocal(gamma);
-              q->red=(double) ClampToQuantum(ClampPixel(alpha*gamma*
-                QuantumRange*node_info->total_color.red));
-              q->green=(double) ClampToQuantum(ClampPixel(alpha*gamma*
-                QuantumRange*node_info->total_color.green));
-              q->blue=(double) ClampToQuantum(ClampPixel(alpha*gamma*
-                QuantumRange*node_info->total_color.blue));
+              q->red=(double) ClampToQuantum(alpha*gamma*QuantumRange*
+                node_info->total_color.red);
+              q->green=(double) ClampToQuantum(alpha*gamma*QuantumRange*
+                node_info->total_color.green);
+              q->blue=(double) ClampToQuantum(alpha*gamma*QuantumRange*
+                node_info->total_color.blue);
               if (node_info->number_unique > cube_info->transparent_pixels)
                 {
                   cube_info->transparent_pixels=node_info->number_unique;