diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp
index 6081b33bc44692d1bb4cd7a3d595932b3fe546ce..f14676798d60456f511810859521fc8f49adde8f 100644
--- a/Graphics/Draw.cpp
+++ b/Graphics/Draw.cpp
@@ -1,4 +1,4 @@
-// $Id: Draw.cpp,v 1.56 2004-05-30 19:17:58 geuzaine Exp $
+// $Id: Draw.cpp,v 1.57 2004-06-01 17:14:30 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -281,20 +281,16 @@ void Filter_SelectionBuffer(int n, GLuint * typ, GLuint * ient,
 void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2,
             GLdouble Xc1, GLdouble Xc2, GLdouble Yc1, GLdouble Yc2)
 {
-  GLdouble xscale1, yscale1;
-
-  xscale1 = CTX.s[0];
-  yscale1 = CTX.s[1];
+  GLdouble xscale1 = CTX.s[0];
+  GLdouble yscale1 = CTX.s[1];
   set_s(0, CTX.s[0] * (CTX.vxmax - CTX.vxmin) / (X2 - X1));
   set_s(1, CTX.s[1] * (CTX.vymax - CTX.vymin) / (Y1 - Y2));
-  set_s(2, 0.5 * (CTX.s[0] + CTX.s[1]));
-  set_t(0,
-        CTX.t[0] * (xscale1 / CTX.s[0]) - ((Xc1 + Xc2) / 2.) * (1. -
-                                                                (xscale1 /
-                                                                 CTX.s[0])));
-  set_t(1,
-        CTX.t[1] * (yscale1 / CTX.s[1]) - ((Yc1 + Yc2) / 2.) * (1. -
-                                                                (yscale1 /
-                                                                 CTX.s[1])));
+  //set_s(2, 0.5 * (CTX.s[0] + CTX.s[1])); // bof, bof. bof: can cause normal clamping
+  set_s(2, MAX(CTX.s[0], CTX.s[1])); // not much better...
+  set_t(0, CTX.t[0] * (xscale1 / CTX.s[0]) - 
+	((Xc1 + Xc2) / 2.) * (1. - (xscale1 / CTX.s[0])));
+  set_t(1, CTX.t[1] * (yscale1 / CTX.s[1]) - 
+	((Yc1 + Yc2) / 2.) * (1. - (yscale1 / CTX.s[1])));
+  InitPosition();
   Draw();
 }