Index: /branches/eam_branches/20090715/Ohana/src/kapa2/include/structures.h
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/include/structures.h	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/include/structures.h	(revision 25296)
@@ -94,5 +94,5 @@
   int      DX, DY;	      // size of displayed picture (must be updated with new images...)
   int      expand;	      // zoomscale
-  double   X,  Y;	      // center of image in picture
+  double   Xc,  Yc;	      // center of image in picture
   char     flipx, flipy;      // parity (0 = +; 1 = -)
   XImage  *pix;
Index: /branches/eam_branches/20090715/Ohana/src/kapa2/src/ButtonFunctions.c
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/src/ButtonFunctions.c	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/src/ButtonFunctions.c	(revision 25296)
@@ -44,6 +44,6 @@
 int Recenter (Graphic *graphic, KapaImageWidget *image) {
 
-  image[0].picture.X = 0.5*image[0].image[0].matrix.Naxis[0];
-  image[0].picture.Y = 0.5*image[0].image[0].matrix.Naxis[1];
+  image[0].picture.Xc = 0.5*image[0].image[0].matrix.Naxis[0];
+  image[0].picture.Yc = 0.5*image[0].image[0].matrix.Naxis[1];
  
   Remap (graphic, image);
@@ -56,4 +56,5 @@
 
   image[0].picture.expand = 1;
+  image[0].zoom.expand = 5;
   Remap (graphic, image);
   Refresh ();
@@ -64,7 +65,8 @@
 int RecenterRescale (Graphic *graphic, KapaImageWidget *image) {
 
-  image[0].picture.X = 0.5*image[0].image[0].matrix.Naxis[0];
-  image[0].picture.Y = 0.5*image[0].image[0].matrix.Naxis[1];
+  image[0].picture.Xc = 0.5*image[0].image[0].matrix.Naxis[0];
+  image[0].picture.Yc = 0.5*image[0].image[0].matrix.Naxis[1];
   image[0].picture.expand = 1;
+  image[0].zoom.expand = 5;
  
   Remap (graphic, image);
Index: /branches/eam_branches/20090715/Ohana/src/kapa2/src/Center.c
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/src/Center.c	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/src/Center.c	(revision 25296)
@@ -16,8 +16,10 @@
   if (image == NULL) return (TRUE);
 
-  image[0].picture.X = X;
-  image[0].picture.Y = Y;
+  // enforce integer center here?
+  image[0].picture.Xc = X;
+  image[0].picture.Yc = Y;
   if ((zoom != 0) && (zoom != -1)) {
     image[0].picture.expand = zoom;
+    image[0].zoom.expand = MIN(image[0].zoom.dx / 5.5, MAX(5, 2*zoom));
   }
 
Index: /branches/eam_branches/20090715/Ohana/src/kapa2/src/InterpretKeys.c
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/src/InterpretKeys.c	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/src/InterpretKeys.c	(revision 25296)
@@ -93,5 +93,5 @@
       SetColorScale (graphic, image);
       Remap (graphic, image);
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y, 0);
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc, 0);
       break;
 
@@ -100,5 +100,5 @@
       SetColorScale (graphic, image);
       Remap (graphic, image);
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y, 0);
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc, 0);
       break;
 
@@ -107,5 +107,5 @@
       SetColorScale (graphic, image);
       Remap (graphic, image);
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y, 0);
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc, 0);
       break;
 
@@ -113,9 +113,11 @@
     case XK_Home:
       image[0].picture.expand = 1;
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y, 0);
+      image[0].zoom.expand = 5;
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc, 0);
       break;
     case XK_KP_End:
     case XK_End:
       image[0].picture.expand = 1;
+      image[0].zoom.expand = 5;
       Reorient (graphic, image, 0.5*image[0].image[0].matrix.Naxis[0], 0.5*image[0].image[0].matrix.Naxis[1], 0);
       break;
@@ -128,25 +130,25 @@
     case XK_Prior:
     case XK_KP_Prior:
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y, +1);
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc, +1);
       break;
     case XK_Next:
     case XK_KP_Next:
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y, -1);
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc, -1);
       break;
     case XK_Up:
     case XK_KP_Up:
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y + offset, 0);
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc + offset, 0);
       break;
     case XK_Down:
     case XK_KP_Down:
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y - offset, 0);
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc - offset, 0);
       break;
     case XK_Left:
     case XK_KP_Left:
-      Reorient (graphic, image, image[0].picture.X + offset, image[0].picture.Y, 0);
+      Reorient (graphic, image, image[0].picture.Xc + offset, image[0].picture.Yc, 0);
       break;
     case XK_Right:
     case XK_KP_Right:
-      Reorient (graphic, image, image[0].picture.X - offset, image[0].picture.Y, 0);
+      Reorient (graphic, image, image[0].picture.Xc - offset, image[0].picture.Yc, 0);
       break;
 
@@ -160,5 +162,5 @@
       SetColorScale (graphic, image);
       Remap (graphic, image);
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y, 0);
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc, 0);
       break;
     case XK_KP_Subtract:
@@ -171,5 +173,5 @@
       SetColorScale (graphic, image);
       Remap (graphic, image);
-      Reorient (graphic, image, image[0].picture.X, image[0].picture.Y, 0);
+      Reorient (graphic, image, image[0].picture.Xc, image[0].picture.Yc, 0);
       break;
 
Index: /branches/eam_branches/20090715/Ohana/src/kapa2/src/LoadPicture.c
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/src/LoadPicture.c	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/src/LoadPicture.c	(revision 25296)
@@ -25,6 +25,7 @@
   Yoffset = 0.0;
   if (image[0].image[0].matrix.size) {
-    Xoffset = image[0].picture.X - 0.5*image[0].image[0].matrix.Naxis[0];
-    Yoffset = image[0].picture.Y - 0.5*image[0].image[0].matrix.Naxis[1];
+    // XXX enforce int center here?
+    Xoffset = image[0].picture.Xc - 0.5*image[0].image[0].matrix.Naxis[0];
+    Yoffset = image[0].picture.Yc - 0.5*image[0].image[0].matrix.Naxis[1];
   }
 
@@ -49,6 +50,6 @@
 
   // reference point for image is the center pixel
-  image[0].picture.X = 0.5*header.Naxis[0] + Xoffset;
-  image[0].picture.Y = 0.5*header.Naxis[1] + Yoffset;
+  image[0].picture.Xc = 0.5*header.Naxis[0] + Xoffset;
+  image[0].picture.Yc = 0.5*header.Naxis[1] + Yoffset;
 
   // choose expand for wide to guarantee we fit:
@@ -59,6 +60,6 @@
     image[0].wide.expand = 1.0 / wx;
   }    
-  image[0].wide.X = 0.5*header.Naxis[0];
-  image[0].wide.Y = 0.5*header.Naxis[1];
+  image[0].wide.Xc = 0.5*header.Naxis[0];
+  image[0].wide.Yc = 0.5*header.Naxis[1];
 
   fcntl (sock, F_SETFL, O_NONBLOCK);  
Index: /branches/eam_branches/20090715/Ohana/src/kapa2/src/MakeColormap.c
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/src/MakeColormap.c	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/src/MakeColormap.c	(revision 25296)
@@ -1,6 +1,6 @@
 # include "Ximage.h"
 
-// static char default_cmap[] = "grayscale";
-static char default_cmap[] = "heat";
+static char default_cmap[] = "grayscale";
+// static char default_cmap[] = "heat";
 
 void MakeColormap (int argc, char **argv) {
Index: /branches/eam_branches/20090715/Ohana/src/kapa2/src/Reorient.c
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/src/Reorient.c	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/src/Reorient.c	(revision 25296)
@@ -7,7 +7,10 @@
   picture = &image[0].picture;
 
-  if (picture[0].expand == 0) picture[0].expand = 1;
+  if (picture[0].expand == 0) {
+      picture[0].expand = 1;
+      image[0].zoom.expand = 5;
+  }
 
-  if ((picture[0].X == X) && (picture[0].Y == Y) && (mode == 0)) {
+  if ((picture[0].Xc == X) && (picture[0].Yc == Y) && (mode == 0)) {
     Refresh ();
     XFlush (graphic[0].display);
@@ -17,7 +20,7 @@
   switch (mode) {
   case 0:
-    if ((picture[0].X != X) || (picture[0].Y != Y)) {
-      picture[0].X = X;
-      picture[0].Y = Y;
+    if ((picture[0].Xc != X) || (picture[0].Yc != Y)) {
+      picture[0].Xc = X;
+      picture[0].Yc = Y;
     }
     break;
@@ -25,14 +28,15 @@
     picture[0].expand--;
     if ((picture[0].expand == 0) || (picture[0].expand == -1)) picture[0].expand = -2;
-    picture[0].X = X;
-    picture[0].Y = Y;
+    picture[0].Xc = X;
+    picture[0].Yc = Y;
     break;
   case +1:
     picture[0].expand++;
     if ((picture[0].expand == 0) || (picture[0].expand == -1)) picture[0].expand = 1;
-    picture[0].X = X;
-    picture[0].Y = Y;
+    picture[0].Xc = X;
+    picture[0].Yc = Y;
     break;
   }
+  image[0].zoom.expand = MIN(image[0].zoom.dx / 5.5, MAX(5, 2*picture[0].expand));
 
   Remap (graphic, image);
Index: /branches/eam_branches/20090715/Ohana/src/kapa2/src/SetUpGraphic.c
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/src/SetUpGraphic.c	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/src/SetUpGraphic.c	(revision 25296)
@@ -60,4 +60,5 @@
   graphic->color = KapaX11colors (graphic->display, graphic->colormap, graphic->fore, &Ncolors);
   if (MAP_WINDOW) MapWindow (graphic);
+
   return;
 }
Index: /branches/eam_branches/20090715/Ohana/src/kapa2/src/StatusBox.c
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/src/StatusBox.c	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/src/StatusBox.c	(revision 25296)
@@ -11,10 +11,10 @@
     y = 0.5*image[0].image[0].matrix.Naxis[1];
     // z = -1;
-    image[0].zoom.X = x;
-    image[0].zoom.Y = y;
+    image[0].zoom.Xc = x;
+    image[0].zoom.Yc = y;
     // image[0].z = z;
   } else {
-    x = image[0].zoom.X;
-    y = image[0].zoom.Y;
+    x = image[0].zoom.Xc;
+    y = image[0].zoom.Yc;
     // z = image[0].z;
   }
Index: /branches/eam_branches/20090715/Ohana/src/kapa2/src/UpdatePointer.c
===================================================================
--- /branches/eam_branches/20090715/Ohana/src/kapa2/src/UpdatePointer.c	(revision 25295)
+++ /branches/eam_branches/20090715/Ohana/src/kapa2/src/UpdatePointer.c	(revision 25296)
@@ -29,6 +29,6 @@
 
   skip:
-    image[0].zoom.X = x;
-    image[0].zoom.Y = y;
+    image[0].zoom.Xc = x;
+    image[0].zoom.Yc = y;
     
     UpdateStatusBox (graphic, image, x, y, z, 0);
@@ -36,8 +36,10 @@
       
     CreateZoom (graphic, image);  
-    XPutImage (graphic[0].display, graphic[0].window, graphic[0].gc,
-	       image[0].zoom.pix, 0, 0, 
-	       image[0].zoom.x, image[0].zoom.y, 
-	       image[0].zoom.dx, image[0].zoom.dy);
+    if (image[0].zoom.pix) {
+	XPutImage (graphic[0].display, graphic[0].window, graphic[0].gc,
+		   image[0].zoom.pix, 0, 0, 
+		   image[0].zoom.x, image[0].zoom.y, 
+		   image[0].zoom.dx, image[0].zoom.dy);
+    }
     CrossHairs (graphic, &image[0].zoom);
     XFlush (graphic[0].display);
