diff --git a/plug-ins/common/blur-gauss-selective.c b/plug-ins/common/blur-gauss-selective.c
index 7765872..6551aab 100644
--- a/plug-ins/common/blur-gauss-selective.c
+++ b/plug-ins/common/blur-gauss-selective.c
@@ -739,6 +739,7 @@ sel_gauss (GimpDrawable *drawable,
   gint         x1, y1, x2, y2;
   gdouble     *mat;
   gint         numrad;
+  const gint   extra = 16;
 
   gimp_drawable_mask_bounds (drawable->drawable_id, &x1, &y1, &x2, &y2);
 
@@ -751,7 +752,8 @@ sel_gauss (GimpDrawable *drawable,
   mat = g_new (gdouble, numrad);
   init_matrix (radius, mat, numrad);
 
-  src  = g_new (guchar, width * height * bytes);
+  /* extra: cause mmx insns read more than strictly necessary */
+  src  = g_new (guchar, width * height * bytes + extra);
   dest = g_new (guchar, width * height * bytes);
 
   gimp_pixel_rgn_init (&src_rgn,
@@ -792,6 +794,7 @@ preview_update (GimpPreview *preview)
   gint           numrad;
   gdouble       *mat;
   gdouble       radius;
+  const gint    extra = 16;
 
   /* Get drawable info */
   drawable =
@@ -810,7 +813,8 @@ preview_update (GimpPreview *preview)
                        FALSE, FALSE);
   render_buffer = g_new (guchar, width * height * bytes);
 
-  src = g_new (guchar, width * height * bytes);
+  /* extra: cause mmx insns read more than strictly necessary */
+  src = g_new (guchar, width * height * bytes + extra);
 
   /* render image */
   gimp_pixel_rgn_get_rect (&srcPR, src, x1, y1, width, height);
