--- gimp.orig/plug-ins/common/gauss_rle.c	2003-02-05 17:34:49.000000000 +0100
+++ gimp/plug-ins/common/gauss_rle.c	2003-02-05 17:49:21.000000000 +0100
@@ -601,8 +601,6 @@
   max_progress  = (horz <= 0.0 ) ? 0 : width * height * horz;
   max_progress += (vert <= 0.0 ) ? 0 : width * height * vert;
 	  
-  if (has_alpha)
-    multiply_alpha (src, height, bytes);
 
   /*  First the vertical pass  */
   if (vert > 0.0)
@@ -624,6 +622,8 @@
        for (col = 0; col < width; col++)
 	{
 	  gimp_pixel_rgn_get_col (&src_rgn, src, col + x1, y1, (y2 - y1));
+          if (has_alpha)
+              multiply_alpha (src, height, bytes);
 
 	  sp = src;
 	  dp = dest;
@@ -665,6 +665,8 @@
 		  dp[row * bytes + b] = val / total;
 		}
 	    }
+          if (has_alpha)
+              separate_alpha (dest, height, bytes);
 
 	  gimp_pixel_rgn_set_col (&dest_rgn, dest, col + x1, y1, (y2 - y1));
 	  progress += height * vert;
@@ -702,6 +704,8 @@
       for (row = 0; row < height; row++)
 	{
 	  gimp_pixel_rgn_get_row (&src_rgn, src, x1, row + y1, (x2 - x1));
+          if (has_alpha)
+              multiply_alpha (src, width, bytes);
 
 	  sp = src;
 	  dp = dest;
@@ -743,6 +747,8 @@
 		  dp[col * bytes + b] = val / total;
 		}
 	    }
+          if (has_alpha)
+              separate_alpha (dest, width, bytes);
 
 	  gimp_pixel_rgn_set_row (&dest_rgn, dest, x1, row + y1, (x2 - x1));
 	  progress += width * horz;
@@ -751,9 +757,6 @@
 	}
     }
 	  
-  if (has_alpha)
-    separate_alpha (dest, width, bytes);
-
 
   /*  merge the shadow, update the drawable  */
   gimp_drawable_flush (drawable);
