Index: trunk/psLib/src/imageops/psImageConvolve.c
===================================================================
--- trunk/psLib/src/imageops/psImageConvolve.c	(revision 32725)
+++ trunk/psLib/src/imageops/psImageConvolve.c	(revision 32727)
@@ -624,7 +624,7 @@
                 ps##TYPE *vo = calculation->data.TYPE; \
                 int xMax = PS_MIN(Nrange, Nx); \
-                int convRange = PS_MIN(Nrange + 1, Nx); \
                 /* Smooth first Nrange pixels, with renorm */ \
                 for (int i = 0; i < xMax; i++, vi++, vo++) { \
+		    int convRange = PS_MIN(Nrange + 1, Nx - xMax + 1);  \
                     ps##TYPE *vr = vi - i; \
                     ps##TYPE *vg = gauss - i; \
@@ -672,6 +672,6 @@
         /* Smooth the first Nrange pixels, with renorm */ \
         int yMax = PS_MIN(Nrange, Ny); \
-        int convRange = PS_MIN(Nrange + 1, Ny); \
         for (int j = 0; j < yMax; j++) { \
+	    int convRange = PS_MIN(Nrange + 1, Ny - j);		       \
             psVector *calculation = psVectorAlloc(Nx, PS_TYPE_##TYPE); \
             /* Zero the output row */ \
@@ -825,8 +825,8 @@
 	for (int j = 0; j < Ny; j++) {
 	    psF32 *vi = image->data.F32[j];
-	    int xMax = PS_MIN(Nrange, Nx);
-	    int convRange = PS_MIN(Nrange + 1, Nx);
+	    int xMax = PS_MIN(Nrange + 1, Nx);
 	    /* Smooth first Nrange pixels, with renorm */
 	    for (int i = 0; i < xMax; i++, vi++) {
+		int convRange = PS_MIN(Nrange + 1, Nx - i);
 		psF32 *vr = vi - i;
 		psF32 *vg = gauss - i;
@@ -873,7 +873,7 @@
 	for (int i = 0; i < Nx; i++) {
 	    int yMax = PS_MIN(Nrange, Ny);
-	    int convRange = PS_MIN(Nrange + 1, Ny);
 	    /* Smooth first Nrange pixels, with renorm */
 	    for (int j = 0; j < yMax; j++) {
+		int convRange = PS_MIN(Nrange + 1, Ny - j);
 		psF32 *vg = gauss - j;
 		double g = 0.0;
