Index: /trunk/pstamp/src/ppstampMakeStamp.c
===================================================================
--- /trunk/pstamp/src/ppstampMakeStamp.c	(revision 25449)
+++ /trunk/pstamp/src/ppstampMakeStamp.c	(revision 25450)
@@ -321,11 +321,15 @@
 
 
-static void skyToChip(pmAstromObj *pt, pmFPA *fpa, pmChip *chip)
-{
-    // convert from sky to TP to FP
-    psProject(pt->TP, pt->sky, fpa->toSky);
+static void TPToChip(pmAstromObj *pt, pmFPA *fpa, pmChip *chip)
+{
     psPlaneTransformApply(pt->FP, fpa->fromTPA, pt->TP);
     // convert from FP to chip
     psPlaneTransformApply(pt->chip, chip->fromFPA, pt->FP);
+}
+static void skyToChip(pmAstromObj *pt, pmFPA *fpa, pmChip *chip)
+{
+    // convert from sky to TP to FP
+    psProject(pt->TP, pt->sky, fpa->toSky);
+    TPToChip(pt, fpa, chip);
 }
 
@@ -337,5 +341,4 @@
     psPlaneTransformApply(pt->TP, fpa->toTPA, pt->FP);
     psDeproject(pt->sky, pt->TP, fpa->toSky);
-
 }
 
@@ -359,5 +362,5 @@
 
     if (!options->roip.celestialCenter) {
-        // Center was specified in chip coordinates, transform to the sky
+        // Center was specified in chip coordinates, transform to the sky and the TP
         chipToSky(center, fpa, chip);
     }
@@ -371,25 +374,28 @@
     options->roi.y1 = -INFINITY;
 
-    pt->sky->rErr = 0;
-    pt->sky->dErr = 0;
-
-    pt->sky->r = center->sky->r - options->roip.dRA/2;
-    pt->sky->d = center->sky->d - options->roip.dDEC/2;
-    skyToChip(pt, fpa, chip);
+    double dx = 0.5 * options->roip.dRA  / fpa->toSky->Xs;
+    double dy = 0.5 * options->roip.dDEC / fpa->toSky->Ys;
+
+    pt->TP->xErr = 0;
+    pt->TP->yErr = 0;
+
+    pt->TP->x = center->TP->x - dx;
+    pt->TP->y = center->TP->y - dy;
+    TPToChip(pt, fpa, chip);
     compareToBox(&options->roi, pt->chip);
 
-    pt->sky->r = center->sky->r + options->roip.dRA/2;
-    pt->sky->d = center->sky->d - options->roip.dDEC/2;
-    skyToChip(pt, fpa, chip);
+    pt->TP->x = center->TP->x + dx;
+    pt->TP->y = center->TP->y - dy;
+    TPToChip(pt, fpa, chip);
     compareToBox(&options->roi, pt->chip);
 
-    pt->sky->r = center->sky->r + options->roip.dRA/2;
-    pt->sky->d = center->sky->d + options->roip.dDEC/2;
-    skyToChip(pt, fpa, chip);
+    pt->TP->x = center->TP->x + dx;
+    pt->TP->y = center->TP->y + dy;
+    TPToChip(pt, fpa, chip);
     compareToBox(&options->roi, pt->chip);
 
-    pt->sky->r = center->sky->r - options->roip.dRA/2;
-    pt->sky->d = center->sky->d + options->roip.dDEC/2;
-    skyToChip(pt, fpa, chip);
+    pt->TP->x = center->TP->x - dx;
+    pt->TP->y = center->TP->y + dy;
+    TPToChip(pt, fpa, chip);
     compareToBox(&options->roi, pt->chip);
 
