Index: trunk/pswarp/src/pswarpMatchRange.c
===================================================================
--- trunk/pswarp/src/pswarpMatchRange.c	(revision 10957)
+++ trunk/pswarp/src/pswarpMatchRange.c	(revision 10958)
@@ -8,8 +8,8 @@
     psPlaneTransformApply (FP, fpaSrc->fromTPA, TP); \
     psPlaneTransformApply (srcPix, chipSrc->fromFPA, FP); \
-    *minX = PS_MAX (*minX, srcPix->x); \
-    *minY = PS_MAX (*minY, srcPix->y); \
-    *maxX = PS_MIN (*maxX, srcPix->x); \
-    *maxY = PS_MIN (*maxY, srcPix->y);
+    *minX = PS_MIN (*minX, srcPix->x); \
+    *minY = PS_MIN (*minY, srcPix->y); \
+    *maxX = PS_MAX (*maxX, srcPix->x); \
+    *maxY = PS_MAX (*maxY, srcPix->y);
 
 // we are warping from src to dest.  find the max overlapping pixels in the INPUT (src)
@@ -30,8 +30,8 @@
     pmFPA *fpaDest = chipDest->parent;
 
-    *minX = 0;
-    *minY = 0;
-    *maxX = src->image->numCols;
-    *maxY = src->image->numRows;
+    *minX = src->image->numCols;
+    *minY = src->image->numRows;
+    *maxX = 0;
+    *maxY = 0;
 
     // XXX save these as static for speed?
@@ -75,4 +75,15 @@
     TEST_MINMAX;
 
+    *minX = PS_MAX (*minX, 0);
+    *minY = PS_MAX (*minY, 0);
+    *maxX = PS_MIN (*maxX, src->image->numCols);
+    *maxY = PS_MIN (*maxY, src->image->numRows);
+
+    psFree (srcPix);
+    psFree (destPix);
+    psFree (FP);
+    psFree (TP);
+    psFree (sky);
+
     return true;
 }
