diff --git a/magick/annotate.c b/magick/annotate.c
index a1f1356..0f8dc84 100644
--- a/magick/annotate.c
+++ b/magick/annotate.c
@@ -1048,7 +1048,7 @@
     else
       args.pathname=ConstantString(draw_info->font+1);
   face=(FT_Face) NULL;
-  status=FT_Open_Face(library,&args,draw_info->face,&face);
+  status=FT_Open_Face(library,&args,(long) draw_info->face,&face);
   args.pathname=DestroyString(args.pathname);
   if (status != 0)
     {
diff --git a/magick/cache.c b/magick/cache.c
index d1eb7b0..9d320d7 100644
--- a/magick/cache.c
+++ b/magick/cache.c
@@ -5059,8 +5059,8 @@
         x,
         y;
 
-      x=nexus_info->region.x+nexus_info->region.width-1;
-      y=nexus_info->region.y+nexus_info->region.height-1;
+      x=nexus_info->region.x+(ssize_t) nexus_info->region.width-1;
+      y=nexus_info->region.y+(ssize_t) nexus_info->region.height-1;
       if (((nexus_info->region.x >= 0) && (x < (ssize_t) cache_info->columns) &&
            (nexus_info->region.y >= 0) && (y < (ssize_t) cache_info->rows)) &&
           ((nexus_info->region.height == 1UL) ||
diff --git a/magick/colormap.c b/magick/colormap.c
index a3d6082..047a60f 100644
--- a/magick/colormap.c
+++ b/magick/colormap.c
@@ -234,7 +234,7 @@
     {
       index=(ssize_t) (indexes[x]+displace) % image->colors;
       if (index < 0)
-        index+=image->colors;
+        index+=(ssize_t) image->colors;
       indexes[x]=(IndexPacket) index;
       q->red=image->colormap[index].red;
       q->green=image->colormap[index].green;
diff --git a/magick/composite.c b/magick/composite.c
index 244e24b..7335346 100644
--- a/magick/composite.c
+++ b/magick/composite.c
@@ -2755,14 +2755,14 @@
 #if defined(MAGICKCORE_OPENMP_SUPPORT) && defined(MAGICKCORE_FUTURE)
   #pragma omp parallel for schedule(dynamic,4) shared(status)
 #endif
-      for (y=0; y < (ssize_t) image->rows; y+=texture->rows)
+      for (y=0; y < (ssize_t) image->rows; y+=(ssize_t) texture->rows)
       {
         register ssize_t
           x;
 
         if (status == MagickFalse)
           continue;
-        for (x=0; x < (ssize_t) image->columns; x+=texture->columns)
+        for (x=0; x < (ssize_t) image->columns; x+=(ssize_t) texture->columns)
         {
           MagickBooleanType
             thread_status;
@@ -2839,7 +2839,7 @@
       }
     texture_indexes=GetCacheViewVirtualIndexQueue(texture_view);
     indexes=GetCacheViewAuthenticIndexQueue(image_view);
-    for (x=0; x < (ssize_t) image->columns; x+=texture->columns)
+    for (x=0; x < (ssize_t) image->columns; x+=(ssize_t) texture->columns)
     {
       width=texture->columns;
       if ((x+(ssize_t) width) > (ssize_t) image->columns)
diff --git a/magick/compress.c b/magick/compress.c
index f913ca3..497ee2d 100644
--- a/magick/compress.c
+++ b/magick/compress.c
@@ -593,7 +593,7 @@
         case TWId:
         case TBId:
         {
-          count+=entry->count;
+          count+=(ssize_t) entry->count;
           if ((x+count) > (ssize_t) image->columns)
             count=(ssize_t) image->columns-x;
           if (count > 0)
@@ -615,7 +615,7 @@
         case MBId:
         case EXId:
         {
-          count+=entry->count;
+          count+=(ssize_t) entry->count;
           break;
         }
         default:
@@ -688,7 +688,7 @@
 {
 #define HuffmanOutputCode(entry)  \
 {  \
-  mask=1 << (entry->length-1);  \
+  mask=one << (entry->length-1);  \
   while (mask != 0)  \
   {  \
     OutputBit(((entry->code & mask) != 0 ? 1 : 0));  \
@@ -749,6 +749,7 @@
 
   size_t
     mask,
+    one,
     width;
 
   /*
@@ -762,6 +763,7 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   assert(inject_image != (Image *) NULL);
   assert(inject_image->signature == MagickSignature);
+  one=1;
   width=inject_image->columns;
   if (LocaleCompare(image_info->magick,"FAX") == 0)
     width=(size_t) MagickMax(inject_image->columns,1728);
@@ -827,7 +829,7 @@
             entry=MWTable+((runlength/64)-1);
           else
             entry=EXTable+(MagickMin((size_t) runlength,2560)-1792)/64;
-          runlength-=entry->count;
+          runlength-=(ssize_t) entry->count;
           HuffmanOutputCode(entry);
         }
       entry=TWTable+MagickMin((size_t) runlength,63);
@@ -847,7 +849,7 @@
               entry=MBTable+((runlength/64)-1);
               if (runlength >= 1792)
                 entry=EXTable+(MagickMin((size_t) runlength,2560)-1792)/64;
-              runlength-=entry->count;
+              runlength-=(ssize_t) entry->count;
               HuffmanOutputCode(entry);
             }
           entry=TBTable+MagickMin((size_t) runlength,63);
diff --git a/magick/effect.c b/magick/effect.c
index a2294c1..77b89a7 100644
--- a/magick/effect.c
+++ b/magick/effect.c
@@ -4049,12 +4049,12 @@
       qixel=bias;
       if (((channel & OpacityChannel) == 0) || (image->matte == MagickFalse))
         {
-          for (i=0; i < (ssize_t) n; i+=step)
+          for (i=0; i < (ssize_t) n; i+=(ssize_t) step)
           {
-            (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) (blur_center.x+
-              center.x*cos_theta[i]-center.y*sin_theta[i]+0.5),(ssize_t) (
-              blur_center.y+center.x*sin_theta[i]+center.y*cos_theta[i]+0.5),
-              &pixel,exception);
+            (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t)
+              (blur_center.x+center.x*cos_theta[i]-center.y*sin_theta[i]+0.5),
+              (ssize_t) (blur_center.y+center.x*sin_theta[i]+center.y*
+              cos_theta[i]+0.5),&pixel,exception);
             qixel.red+=pixel.red;
             qixel.green+=pixel.green;
             qixel.blue+=pixel.blue;
@@ -4088,12 +4088,12 @@
 
           alpha=1.0;
           gamma=0.0;
-          for (i=0; i < (ssize_t) n; i+=step)
+          for (i=0; i < (ssize_t) n; i+=(ssize_t) step)
           {
-            (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) (blur_center.x+
-              center.x*cos_theta[i]-center.y*sin_theta[i]+0.5),(ssize_t) (
-              blur_center.y+center.x*sin_theta[i]+center.y*cos_theta[i]+0.5),
-              &pixel,exception);
+            (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t)
+              (blur_center.x+center.x*cos_theta[i]-center.y*sin_theta[i]+0.5),
+              (ssize_t) (blur_center.y+center.x*sin_theta[i]+center.y*
+              cos_theta[i]+0.5),&pixel,exception);
             alpha=(MagickRealType) (QuantumScale*
               GetAlphaPixelComponent(&pixel));
             qixel.red+=alpha*pixel.red;
@@ -4652,7 +4652,7 @@
                       k++;
                     }
                 }
-                j+=image->columns+width;
+                j+=(ssize_t) (image->columns+width);
               }
               if (gamma != 0.0)
                 {
@@ -4678,7 +4678,7 @@
                       k++;
                     }
                 }
-                j+=image->columns+width;
+                j+=(ssize_t) (image->columns+width);
               }
               if (gamma != 0.0)
                 {
@@ -4710,7 +4710,7 @@
                   k++;
                 }
             }
-            j+=image->columns+width;
+            j+=(ssize_t) (image->columns+width);
           }
           if (gamma != 0.0)
             {
@@ -4737,7 +4737,7 @@
                       k++;
                     }
                 }
-                j+=image->columns+width;
+                j+=(ssize_t) (image->columns+width);
               }
               if (gamma != 0.0)
                 {
@@ -4765,7 +4765,7 @@
                       k++;
                     }
                 }
-                j+=image->columns+width;
+                j+=(ssize_t) (image->columns+width);
               }
               if (gamma != 0.0)
                 {
diff --git a/magick/fx.c b/magick/fx.c
index 8aa9ba4..fa64cf1 100644
--- a/magick/fx.c
+++ b/magick/fx.c
@@ -4498,9 +4498,8 @@
 {
 #define GetBit(alpha,i) ((((size_t) (alpha) >> (size_t) \
   (i)) & 0x01) != 0)
-#define SetBit(alpha,i,set) (alpha)=(Quantum) ((set) ? (size_t) (alpha) \
-  | (1UL << (size_t) (i)) : (size_t) (alpha) & \
-  ~(1UL << (size_t) (i)))
+#define SetBit(alpha,i,set) (alpha)=(Quantum) ((set) != 0 ? (size_t) (alpha) \
+  | (one << (size_t) (i)) : (size_t) (alpha) & ~(one << (size_t) (i)))
 #define SteganoImageTag  "Stegano/Image"
 
   Image
@@ -4528,7 +4527,8 @@
     *q;
 
   size_t
-    depth;
+    depth,
+    one;
 
   /*
     Initialize steganographic image attributes.
@@ -4541,6 +4541,7 @@
   assert(watermark->signature == MagickSignature);
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
+  one=1UL;
   stegano_image=CloneImage(image,0,0,MagickTrue,exception);
   if (stegano_image == (Image *) NULL)
     return((Image *) NULL);
diff --git a/magick/image.c b/magick/image.c
index 0f8e44d..138bb18 100644
--- a/magick/image.c
+++ b/magick/image.c
@@ -528,13 +528,13 @@
       break;
     if (stack == MagickFalse)
       {
-        x_offset+=image->columns;
+        x_offset+=(ssize_t) image->columns;
         y_offset=0;
       }
     else
       {
         x_offset=0;
-        y_offset+=image->rows;
+        y_offset+=(ssize_t) image->rows;
       }
     image=GetNextImageInList(image);
   }
diff --git a/magick/montage.c b/magick/montage.c
index 2fd3ccf..8d5d914 100644
--- a/magick/montage.c
+++ b/magick/montage.c
@@ -609,7 +609,7 @@
           if (image_list[tile]->rows > max_height)
             max_height=image_list[tile]->rows;
         }
-      x_offset+=width+(extract_info.x+border_width)*2;
+      x_offset+=width+(extract_info.x+(ssize_t) border_width)*2;
       if (x_offset > (ssize_t) bounds.width)
         bounds.width=(size_t) x_offset;
       if (((tile+1) == (ssize_t) tiles_per_page) ||
@@ -620,7 +620,7 @@
             GetMontageGeometry(montage_info->tile,number_images,&x_offset,&y,
               &sans,&sans);
           height=concatenate != MagickFalse ? max_height : extract_info.height;
-          y_offset+=(size_t) (height+(extract_info.y+border_width)*2+
+          y_offset+=(size_t) (height+(extract_info.y+(ssize_t) border_width)*2+
             (metrics.ascent-metrics.descent+4)*number_lines+
             (montage_info->shadow != MagickFalse ? 4 : 0));
           if (y_offset > (ssize_t) bounds.height)
@@ -846,12 +846,12 @@
               (void) AnnotateImage(montage,draw_info);
             }
         }
-      x_offset+=width+(extract_info.x+border_width)*2;
+      x_offset+=width+(extract_info.x+(ssize_t) border_width)*2;
       if (((tile+1) == (ssize_t) tiles_per_page) ||
           (((tile+1) % tiles_per_row) == 0))
         {
           x_offset=extract_info.x;
-          y_offset+=(size_t) (height+(extract_info.y+border_width)*2+
+          y_offset+=(size_t) (height+(extract_info.y+(ssize_t) border_width)*2+
             (metrics.ascent-metrics.descent+4)*number_lines+
             (montage_info->shadow != MagickFalse ? 4 : 0));
           max_height=0;
diff --git a/magick/morphology.c b/magick/morphology.c
index 4907304..52edcb0 100644
--- a/magick/morphology.c
+++ b/magick/morphology.c
@@ -1474,7 +1474,7 @@
           return(DestroyKernelInfo(kernel));
 
         /* set all kernel values to scale given */
-        u=(ssize_t) kernel->width*kernel->height;
+        u=(ssize_t) (kernel->width*kernel->height);
         for ( i=0; i < u; i++)
             kernel->values[i] = scale;
         kernel->minimum = kernel->maximum = scale;   /* a flat shape */
@@ -3396,10 +3396,10 @@
           }
           /* rotate the origin - relative to center of array */
           { register ssize_t x,y;
-            x = (ssize_t) kernel->x*2-kernel->width+1;
-            y = (ssize_t) kernel->y*2-kernel->height+1;
-            kernel->x = (size_t) ( -y +kernel->width-1)/2;
-            kernel->y = (size_t) ( +x +kernel->height-1)/2;
+            x = (ssize_t) (kernel->x*2-kernel->width+1);
+            y = (ssize_t) (kernel->y*2-kernel->height+1);
+            kernel->x = (size_t) ( -y +(ssize_t) kernel->width-1)/2;
+            kernel->y = (size_t) ( +x +(ssize_t) kernel->height-1)/2;
           }
           angle = fmod(angle+270.0, 360.0);     /* angle reduced 90 degrees */
           kernel->angle = fmod(kernel->angle+90.0, 360.0);
diff --git a/magick/nt-feature.c b/magick/nt-feature.c
index 5eb55d5..e5dd518 100644
--- a/magick/nt-feature.c
+++ b/magick/nt-feature.c
@@ -161,8 +161,8 @@
     Initialize crop image attributes.
   */
   bitmap.bmType         = 0;
-  bitmap.bmWidth        = page.width;
-  bitmap.bmHeight       = page.height;
+  bitmap.bmWidth        = (LONG) page.width;
+  bitmap.bmHeight       = (LONG) page.height;
   bitmap.bmWidthBytes   = bitmap.bmWidth * 4;
   bitmap.bmPlanes       = 1;
   bitmap.bmBitsPixel    = 32;
@@ -198,7 +198,7 @@
           x;
 
         /* Transfer pixels, scaling to Quantum */
-        for( x=page.width ; x> 0 ; x-- )
+        for( x=(ssize_t) page.width ; x> 0 ; x-- )
           {
             q->rgbRed = ScaleQuantumToChar(GetRedPixelComponent(p));
             q->rgbGreen = ScaleQuantumToChar(GetGreenPixelComponent(p));
@@ -612,8 +612,8 @@
 
   (void) ResetMagickMemory(&bitmap,0,sizeof(bitmap));
   bitmap.bmType=0;
-  bitmap.bmWidth=image->columns;
-  bitmap.bmHeight=image->rows;
+  bitmap.bmWidth=(LONG) image->columns;
+  bitmap.bmHeight=(LONG) image->rows;
   bitmap.bmWidthBytes=4*bitmap.bmWidth;
   bitmap.bmPlanes=1;
   bitmap.bmBitsPixel=32;
diff --git a/magick/pixel.h b/magick/pixel.h
index 6d13b10..593ba12 100644
--- a/magick/pixel.h
+++ b/magick/pixel.h
@@ -80,7 +80,7 @@
 
 typedef struct _LongPixelPacket
 {
-  unsigned long
+  size_t
     red,
     green,
     blue,
diff --git a/magick/property.c b/magick/property.c
index d7366f9..4edb7c9 100644
--- a/magick/property.c
+++ b/magick/property.c
@@ -1280,7 +1280,7 @@
         format;
 
       q=(unsigned char *) (directory+2+(12*entry));
-      tag_value=(ssize_t) ReadPropertyShort(endian,q)+tag_offset;
+      tag_value=(ssize_t) (ReadPropertyShort(endian,q)+tag_offset);
       format=(size_t) ReadPropertyShort(endian,q+2);
       if (format >= (sizeof(tag_bytes)/sizeof(*tag_bytes)))
         break;
diff --git a/magick/quantize.c b/magick/quantize.c
index 3ea9a11..45c7ab1 100644
--- a/magick/quantize.c
+++ b/magick/quantize.c
@@ -2180,6 +2180,7 @@
     j,
     k,
     l,
+    length,
     n;
 
   MagickBooleanType
@@ -2205,7 +2206,8 @@
   if (posterize_image == (Image *) NULL)
     return(MagickFalse);
   l=1;
-  while ((l*l*l) < (ssize_t) MagickMin((ssize_t) levels*levels*levels,MaxColormapSize+1))
+  length=levels*levels*levels;
+  while ((l*l*l) < (ssize_t) MagickMin((ssize_t) length,MaxColormapSize+1))
     l++;
   status=SetImageExtent(posterize_image,(size_t) (l*l*l),1);
   if (status == MagickFalse)
diff --git a/magick/quantum-export.c b/magick/quantum-export.c
index 6d2fb6c..9b2eacd 100644
--- a/magick/quantum-export.c
+++ b/magick/quantum-export.c
@@ -188,7 +188,7 @@
     quantum_bits=(size_t) i;
     if (quantum_bits > quantum_state->bits)
       quantum_bits=quantum_state->bits;
-    i-=quantum_bits;
+    i-=(ssize_t) quantum_bits;
     if (quantum_state->bits == 8)
       *pixels='\0';
     quantum_state->bits-=quantum_bits;
@@ -221,7 +221,7 @@
       quantum_bits=quantum_state->bits;
     quantum_state->pixel|=(((pixel >> (depth-i)) &
       quantum_state->mask[quantum_bits]) << (32UL-quantum_state->bits));
-    i-=quantum_bits;
+    i-=(ssize_t) quantum_bits;
     quantum_state->bits-=quantum_bits;
     if (quantum_state->bits == 0U)
       {
diff --git a/magick/quantum-import.c b/magick/quantum-import.c
index 06a0097..4722c42 100644
--- a/magick/quantum-import.c
+++ b/magick/quantum-import.c
@@ -212,7 +212,7 @@
     quantum_bits=(size_t) i;
     if (quantum_bits > quantum_state->bits)
       quantum_bits=quantum_state->bits;
-    i-=quantum_bits;
+    i-=(ssize_t) quantum_bits;
     quantum_state->bits-=quantum_bits;
     *quantum=(*quantum << quantum_bits) | ((quantum_state->pixel >>
       quantum_state->bits) &~ ((~0UL) << quantum_bits));
@@ -244,7 +244,7 @@
       quantum_bits=quantum_state->bits;
     *quantum|=(((quantum_state->pixel >> (32UL-quantum_state->bits)) &
       quantum_state->mask[quantum_bits]) << (depth-i));
-    i-=quantum_bits;
+    i-=(ssize_t) quantum_bits;
     quantum_state->bits-=quantum_bits;
   }
   return(pixels);
diff --git a/magick/resample.c b/magick/resample.c
index 1408741..361bbe2 100644
--- a/magick/resample.c
+++ b/magick/resample.c
@@ -191,8 +191,8 @@
   resample_filter->debug=IsEventLogging();
   resample_filter->signature=MagickSignature;
 
-  resample_filter->image_area = (ssize_t) resample_filter->image->columns *
-    resample_filter->image->rows;
+  resample_filter->image_area=(ssize_t) (resample_filter->image->columns*
+    resample_filter->image->rows);
   resample_filter->average_defined = MagickFalse;
 
   /* initialise the resampling filter settings */
diff --git a/magick/shear.c b/magick/shear.c
index 447cf32..9d560e8 100644
--- a/magick/shear.c
+++ b/magick/shear.c
@@ -590,7 +590,7 @@
   q=destination_cells;
   for (step=1; step < p->width; step*=2)
   {
-    for (x=0; x < (ssize_t) p->width; x+=2*step)
+    for (x=0; x < (ssize_t) p->width; x+=2*(ssize_t) step)
     {
       ssize_t
         y;
@@ -606,13 +606,16 @@
         for (y=0; y < (ssize_t) (p->height-i-1); y++)
         {
           cell=GetRadonCell(p,x+i,y);
-          (void) SetRadonCell(q,x+2*i,y,cell+GetRadonCell(p,x+i+step,y+i));
-          (void) SetRadonCell(q,x+2*i+1,y,cell+GetRadonCell(p,x+i+step,y+i+1));
+          (void) SetRadonCell(q,x+2*i,y,cell+GetRadonCell(p,x+i+(ssize_t)
+            step,y+i));
+          (void) SetRadonCell(q,x+2*i+1,y,cell+GetRadonCell(p,x+i+(ssize_t)
+            step,y+i+1));
         }
         for ( ; y < (ssize_t) (p->height-i); y++)
         {
           cell=GetRadonCell(p,x+i,y);
-          (void) SetRadonCell(q,x+2*i,y,cell+GetRadonCell(p,x+i+step,y+i));
+          (void) SetRadonCell(q,x+2*i,y,cell+GetRadonCell(p,x+i+(ssize_t) step,
+            y+i));
           (void) SetRadonCell(q,x+2*i+1,y,cell);
         }
         for ( ; y < (ssize_t) p->height; y++)
@@ -1081,14 +1084,14 @@
 #if defined(MAGICKCORE_OPENMP_SUPPORT) && defined(MAGICKCORE_FUTURE)
   #pragma omp parallel for schedule(dynamic,4) shared(progress, status)
 #endif
-      for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=tile_height)
+      for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=(ssize_t) tile_height)
       {
         register ssize_t
           tile_x;
 
         if (status == MagickFalse)
           continue;
-        for (tile_x=0; tile_x < (ssize_t) image->columns; tile_x+=tile_width)
+        for (tile_x=0; tile_x < (ssize_t) image->columns; tile_x+=(ssize_t) tile_width)
         {
           MagickBooleanType
             sync;
@@ -1137,7 +1140,7 @@
               x;
 
             q=QueueCacheViewAuthenticPixels(rotate_view,(ssize_t)
-              rotate_image->columns-(tile_y+height),y+tile_x,height,
+              (rotate_image->columns-(tile_y+height)),y+tile_x,height,
               1,exception);
             if (q == (PixelPacket *) NULL)
               {
@@ -1272,14 +1275,14 @@
 #if defined(MAGICKCORE_OPENMP_SUPPORT) && defined(MAGICKCORE_FUTURE)
   #pragma omp parallel for schedule(dynamic,4) shared(progress,status)
 #endif
-      for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=tile_height)
+      for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=(ssize_t) tile_height)
       {
         register ssize_t
           tile_x;
 
         if (status == MagickFalse)
           continue;
-        for (tile_x=0; tile_x < (ssize_t) image->columns; tile_x+=tile_width)
+        for (tile_x=0; tile_x < (ssize_t) image->columns; tile_x+=(ssize_t) tile_width)
         {
           MagickBooleanType
             sync;
@@ -1328,7 +1331,7 @@
               x;
 
             q=QueueCacheViewAuthenticPixels(rotate_view,tile_y,(ssize_t)
-              y+rotate_image->rows-(tile_x+width),height,1,exception);
+              (y+rotate_image->rows-(tile_x+width)),height,1,exception);
             if (q == (PixelPacket *) NULL)
               {
                 status=MagickFalse;
@@ -1958,22 +1961,22 @@
   /*
     Rotate the image.
   */
-  status=XShearImage(rotate_image,shear.x,width,height,x_offset,((ssize_t)
-    rotate_image->rows-height)/2,exception);
+  status=XShearImage(rotate_image,shear.x,width,height,x_offset,(ssize_t)
+    (rotate_image->rows-height)/2,exception);
   if (status == MagickFalse)
     {
       rotate_image=DestroyImage(rotate_image);
       return((Image *) NULL);
     }
-  status=YShearImage(rotate_image,shear.y,y_width,height,((ssize_t)
-    rotate_image->columns-y_width)/2,y_offset,exception);
+  status=YShearImage(rotate_image,shear.y,y_width,height,(ssize_t)
+    (rotate_image->columns-y_width)/2,y_offset,exception);
   if (status == MagickFalse)
     {
       rotate_image=DestroyImage(rotate_image);
       return((Image *) NULL);
     }
-  status=XShearImage(rotate_image,shear.x,y_width,rotate_image->rows,((ssize_t)
-    rotate_image->columns-y_width)/2,0,exception);
+  status=XShearImage(rotate_image,shear.x,y_width,rotate_image->rows,(ssize_t)
+    (rotate_image->columns-y_width)/2,0,exception);
   if (status == MagickFalse)
     {
       rotate_image=DestroyImage(rotate_image);
@@ -2107,14 +2110,14 @@
   if (shear_image->matte == MagickFalse)
     (void) SetImageAlphaChannel(shear_image,OpaqueAlphaChannel);
   status=XShearImage(shear_image,shear.x,image->columns,image->rows,x_offset,
-    ((ssize_t) shear_image->rows-image->rows)/2,exception);
+    (ssize_t) (shear_image->rows-image->rows)/2,exception);
   if (status == MagickFalse)
     {
       shear_image=DestroyImage(shear_image);
       return((Image *) NULL);
     }
-  status=YShearImage(shear_image,shear.y,y_width,image->rows,((ssize_t)
-    shear_image->columns-y_width)/2,y_offset,exception);
+  status=YShearImage(shear_image,shear.y,y_width,image->rows,(ssize_t)
+    (shear_image->columns-y_width)/2,y_offset,exception);
   if (status == MagickFalse)
     {
       shear_image=DestroyImage(shear_image);
diff --git a/magick/thread-private.h b/magick/thread-private.h
index 4b4bff0..58be557 100644
--- a/magick/thread-private.h
+++ b/magick/thread-private.h
@@ -117,7 +117,7 @@
 #endif
 }
 
-static inline void SetOpenMPMaximumThreads(const size_t threads)
+static inline void SetOpenMPMaximumThreads(const int threads)
 {
 #if defined(MAGICKCORE_OPENMP_SUPPORT) && (_OPENMP >= 200203)
   omp_set_num_threads(threads);
diff --git a/magick/transform.c b/magick/transform.c
index 86ec542..33f80ef 100644
--- a/magick/transform.c
+++ b/magick/transform.c
@@ -212,7 +212,7 @@
   /*
     Extract chop image.
   */
-  i+=extent.height;
+  i+=(ssize_t) extent.height;
   for (y=0; y < (ssize_t) (image->rows-(extent.y+extent.height)); y++)
   {
     register const PixelPacket
@@ -1221,13 +1221,13 @@
   offset.x=x_offset;
   offset.y=y_offset;
   while (offset.x < 0)
-    offset.x+=image->columns;
+    offset.x+=(ssize_t) image->columns;
   while (offset.x >= (ssize_t) image->columns)
-    offset.x-=image->columns;
+    offset.x-=(ssize_t) image->columns;
   while (offset.y < 0)
-    offset.y+=image->rows;
+    offset.y+=(ssize_t) image->rows;
   while (offset.y >= (ssize_t) image->rows)
-    offset.y-=image->rows;
+    offset.y-=(ssize_t) image->rows;
   /*
     Roll image.
   */
@@ -1311,8 +1311,8 @@
     return((Image *) NULL);
   shave_image->page.width-=2*shave_info->width;
   shave_image->page.height-=2*shave_info->height;
-  shave_image->page.x-=shave_info->width;
-  shave_image->page.y-=shave_info->height;
+  shave_image->page.x-=(ssize_t) shave_info->width;
+  shave_image->page.y-=(ssize_t) shave_info->height;
   return(shave_image);
 }
 
@@ -1406,47 +1406,47 @@
       break;
     case NorthGravity:
     {
-      splice_geometry.x+=splice_geometry.width/2;
+      splice_geometry.x+=(ssize_t) splice_geometry.width/2;
       break;
     }
     case NorthEastGravity:
     {
-      splice_geometry.x+=splice_geometry.width;
+      splice_geometry.x+=(ssize_t) splice_geometry.width;
       break;
     }
     case WestGravity:
     {
-      splice_geometry.y+=splice_geometry.width/2;
+      splice_geometry.y+=(ssize_t) splice_geometry.width/2;
       break;
     }
     case StaticGravity:
     case CenterGravity:
     {
-      splice_geometry.x+=splice_geometry.width/2;
-      splice_geometry.y+=splice_geometry.height/2;
+      splice_geometry.x+=(ssize_t) splice_geometry.width/2;
+      splice_geometry.y+=(ssize_t) splice_geometry.height/2;
       break;
     }
     case EastGravity:
     {
-      splice_geometry.x+=splice_geometry.width;
-      splice_geometry.y+=splice_geometry.height/2;
+      splice_geometry.x+=(ssize_t) splice_geometry.width;
+      splice_geometry.y+=(ssize_t) splice_geometry.height/2;
       break;
     }
     case SouthWestGravity:
     {
-      splice_geometry.y+=splice_geometry.height;
+      splice_geometry.y+=(ssize_t) splice_geometry.height;
       break;
     }
     case SouthGravity:
     {
-      splice_geometry.x+=splice_geometry.width/2;
-      splice_geometry.y+=splice_geometry.height;
+      splice_geometry.x+=(ssize_t) splice_geometry.width/2;
+      splice_geometry.y+=(ssize_t) splice_geometry.height;
       break;
     }
     case SouthEastGravity:
     {
-      splice_geometry.x+=splice_geometry.width;
-      splice_geometry.y+=splice_geometry.height;
+      splice_geometry.x+=(ssize_t) splice_geometry.width;
+      splice_geometry.y+=(ssize_t) splice_geometry.height;
       break;
     }
   }
@@ -1555,7 +1555,7 @@
 
     if (status == MagickFalse)
       continue;
-    p=GetCacheViewVirtualPixels(image_view,0,y-splice_geometry.height,
+    p=GetCacheViewVirtualPixels(image_view,0,y-(ssize_t) splice_geometry.height,
       image->columns,1,exception);
     q=QueueCacheViewAuthenticPixels(splice_view,0,y,splice_image->columns,1,
       exception);
@@ -1830,12 +1830,12 @@
              proceed=MagickTrue;
              i=0;
              number_images=0;
-             for (y=0; y < (ssize_t) transform_image->page.height; y+=height)
-               for (x=0; x < (ssize_t) transform_image->page.width; x+=width)
+             for (y=0; y < (ssize_t) transform_image->page.height; y+=(ssize_t) height)
+               for (x=0; x < (ssize_t) transform_image->page.width; x+=(ssize_t) width)
                  number_images++;
-             for (y=0; y < (ssize_t) transform_image->page.height; y+=height)
+             for (y=0; y < (ssize_t) transform_image->page.height; y+=(ssize_t) height)
              {
-               for (x=0; x < (ssize_t) transform_image->page.width; x+=width)
+               for (x=0; x < (ssize_t) transform_image->page.width; x+=(ssize_t) width)
                {
                  progress_monitor=SetImageProgressMonitor(transform_image,
                    (MagickProgressMonitor) NULL,transform_image->client_data);
diff --git a/magick/utility.c b/magick/utility.c
index 80338c5..b83d45d 100644
--- a/magick/utility.c
+++ b/magick/utility.c
@@ -930,7 +930,7 @@
     *cwd;
 
   *path='\0';
-  cwd=getcwd(path,(size_t) extent);
+  cwd=getcwd(path,(unsigned long) extent);
 #if defined(MAGICKCORE_HAVE_GETPID) && defined(MAGICKCORE_HAVE_READLINK) && defined(PATH_MAX)
   {
     char