diff --git a/magick/montage.c b/magick/montage.c
index 8d5d914..93c5d55 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+(ssize_t) border_width)*2;
+      x_offset+=(ssize_t) (width+2*(extract_info.x+border_width));
       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+(ssize_t) border_width)*2+
+          y_offset+=(ssize_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+(ssize_t) border_width)*2;
+      x_offset+=(ssize_t) (width+2*(extract_info.x+border_width));
       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+(ssize_t) border_width)*2+
+          y_offset+=(ssize_t) (height+(extract_info.y+border_width)*2+
             (metrics.ascent-metrics.descent+4)*number_lines+
             (montage_info->shadow != MagickFalse ? 4 : 0));
           max_height=0;