Index: src/Graphics/Renderer/renderer.cpp
===================================================================
--- src/Graphics/Renderer/renderer.cpp	(revision 5963)
+++ src/Graphics/Renderer/renderer.cpp	(working copy)
@@ -121,7 +121,7 @@
   cx2= (SI) ::round (cx2 * zoomf);
   cy1= (SI) ::round (cy1 * zoomf);
   cy2= (SI) ::round (cy2 * zoomf);
-  zoomf  = zoom;
+  zoomf  = 2*zoom;
   shrinkf= (int) ::round (std_shrinkf / zoomf);
   pixel  = (SI)  ::round ((std_shrinkf * PIXEL) / zoomf);
   thicken= (shrinkf >> 1) * PIXEL;
Index: src/Plugins/Qt/QTMWidget.cpp
===================================================================
--- src/Plugins/Qt/QTMWidget.cpp	(revision 5963)
+++ src/Plugins/Qt/QTMWidget.cpp	(working copy)
@@ -37,8 +37,6 @@
 
 #include <QEvent>
 
-#define PIXEL 256
-
 QSet<QTMWidget*> QTMWidget::all_widgets;
 
 
@@ -46,14 +44,10 @@
 hashmap<int,string> qtdeadmap (0);
 
 inline void
-scale (QPoint& point) {
-  point.rx() *= PIXEL; point.ry() *= -PIXEL;
-}
-
-inline void
 map (int code, string name) {
   qtkeymap(code) = name;
 }
+
 inline void
 deadmap (int code, string name) {
   qtdeadmap(code) = name;
@@ -219,7 +213,7 @@
  // QPoint pt = QAbstractScrollArea::viewport()->pos();
    //cout << "invalidate all " << LF;
   invalid_regions = rectangles();
-  invalidate_rect (0, 0, sz.width(), sz.height());
+  invalidate_rect (0, 0, 2*sz.width(), 2*sz.height());
 }
 
 
@@ -272,8 +266,8 @@
   // update backing store origin wrt. TeXmacs document
   if ( backing_pos != origin() ) {
 
-    int dx =  origin().x() - backing_pos.x();
-    int dy =  origin().y() - backing_pos.y();
+    int dx =  2*(origin().x() - backing_pos.x());
+    int dy =  2*(origin().y() - backing_pos.y());
     backing_pos = origin();
     
     QPixmap newBackingPixmap (backingPixmap.size());
@@ -284,7 +278,6 @@
     backingPixmap = newBackingPixmap;
     //cout << "SCROLL CONTENTS BY " << dx << " " << dy << LF;
     
-    QSize sz = backingPixmap.size();
     
     rectangles invalid;
     while (!is_nil(invalid_regions)) {
@@ -295,9 +288,11 @@
       //cout << r << " ---> " << q << LF;
       invalid_regions = invalid_regions->next;
     }
+
+    QSize sz = backingPixmap.size();
+      
     invalid_regions= invalid & rectangles(rectangle(0,0,
                                                     sz.width(),sz.height()));
-    
     if (dy<0) 
       invalidate_rect(0,0,sz.width(),min(sz.height(),-dy));
     else if (dy>0)
@@ -314,21 +309,24 @@
     // (for example when scrolling is initiated by TeXmacs itself)
     //the_gui->update();
     //  QAbstractScrollArea::viewport()->scroll(-dx,-dy);
-   // QAbstractScrollArea::viewport()->update();
+    // QAbstractScrollArea::viewport()->update();
     qrgn += QRect(QPoint(0,0),sz);
   }
   
-    //cout << "   repaint QPixmap of size " << backingPixmap.width() << " x " 
-    // << backingPixmap.height() << LF;
+  //cout << "   repaint QPixmap of size " << backingPixmap.width() << " x " 
+  // << backingPixmap.height() << LF;
+ 
   // update backing store size
   {
     QSize _oldSize = backingPixmap.size();
-    QSize _newSize = surface()->size();
+    QSize _new_logical_Size = surface()->size();
+    QSize _newSize = _new_logical_Size;
+    _newSize *= 2;
+	  
+    //cout << "      surface size of " << _newSize.width() << " x " 
+    // << _newSize.height() << LF;
     
-      //cout << "      surface size of " << _newSize.width() << " x " 
-      // << _newSize.height() << LF;
     
-    
     if (_newSize != _oldSize) {
       // cout << "RESIZING BITMAP"<< LF;
       QPixmap newBackingPixmap (_newSize);
@@ -359,8 +357,9 @@
       basic_renderer_rep* ren = getRenderer();
       tm_widget()->set_current_renderer(ren);
       
-      SI ox = -backing_pos.x()*PIXEL;  // Warning: this is NOT from_qpoint()
-      SI oy = backing_pos.y()*PIXEL;
+      coord2 pt_or = from_qpoint(backing_pos);
+      SI ox = -pt_or.x1;
+      SI oy = -pt_or.x2;
       
       rectangles rects = invalid_regions;
       invalid_regions = rectangles();
@@ -368,7 +367,7 @@
       while (!is_nil (rects)) {
         rectangle r = copy (rects->item);
         rectangle r0 = rects->item;
-        QRect qr = QRect(r0->x1, r0->y1, r0->x2 - r0->x1, r0->y2 - r0->y1);
+        QRect qr = QRect(r0->x1/2, r0->y1/2, (r0->x2 - r0->x1)/2, (r0->y2 - r0->y1)/2);
         //cout << "repainting " << r0 << "\n";
         ren->set_origin(ox, oy); 
         ren->encode (r->x1, r->y1);
@@ -394,7 +393,6 @@
 
   // propagate immediatly the changes to the screen  
   surface()->repaint(qrgn);
-  
 }
 
 void 
@@ -447,7 +445,7 @@
   QVector<QRect> rects = event->region().rects();
   for (int i=0; i< rects.count(); i++) {
     QRect qr = rects.at(i);
-    p.drawPixmap(qr,backingPixmap,qr);
+    p.drawPixmap(QRect(qr.x(),qr.y(),qr.width(),qr.height()),backingPixmap,QRect(2*qr.x(),2*qr.y(),2*qr.width(),2*qr.height()));
   }
 }
 
@@ -816,10 +814,10 @@
 QTMWidget::mousePressEvent (QMouseEvent* event) {
   if (tm_widget()->ref_count == 0) return;
   QPoint point = event->pos() + origin();
-  scale (point);
+  coord2 pt = from_qpoint(point);
   unsigned int mstate= mouse_state (event, false);
   string s= "press-" * mouse_decode (mstate);
-  the_gui -> process_mouse (tm_widget(), s, point.x (), point.y (), 
+  the_gui -> process_mouse (tm_widget(), s, pt.x1, pt.x2,  
                             mstate, texmacs_time ());
  // tm_widget() -> handle_mouse (s, point.x (), point.y (), mstate, texmacs_time ());
   /*
@@ -834,10 +832,10 @@
 QTMWidget::mouseReleaseEvent (QMouseEvent* event) {
   if (tm_widget()->ref_count == 0) return;
   QPoint point = event->pos() + origin();
-  scale (point);
+  coord2 pt = from_qpoint(point);
   unsigned int mstate= mouse_state (event, true);
   string s= "release-" * mouse_decode (mstate);
-  the_gui -> process_mouse (tm_widget(), s, point.x (), point.y (), 
+  the_gui -> process_mouse (tm_widget(), s, pt.x1, pt.x2,  
                             mstate, texmacs_time ());
 //  tm_widget() -> handle_mouse (s, point.x (), point.y (), mstate, texmacs_time ());
   /*
@@ -852,10 +850,10 @@
 QTMWidget::mouseMoveEvent (QMouseEvent* event) {
   if (tm_widget()->ref_count == 0) return;
   QPoint point = event->pos() + origin();
-  scale (point);
+  coord2 pt = from_qpoint(point);
   unsigned int mstate= mouse_state (event, false);
   string s= "move";
-  the_gui -> process_mouse (tm_widget(), s, point.x (), point.y (), 
+  the_gui -> process_mouse (tm_widget(), s, pt.x1, pt.x2, 
                             mstate, texmacs_time ());
 //  tm_widget() -> handle_mouse (s, point.x (), point.y (), mstate, texmacs_time ());
   /*
Index: src/Plugins/Qt/qt_simple_widget.cpp
===================================================================
--- src/Plugins/Qt/qt_simple_widget.cpp	(revision 5963)
+++ src/Plugins/Qt/qt_simple_widget.cpp	(working copy)
@@ -101,7 +101,8 @@
     int width, height;
     wid->handle_get_size_hint (width, height);
     QSize s = to_qsize(width, height);
-    QPixmap pxm(s);
+    QSize phys_s = s; phys_s *= 2;
+    QPixmap pxm(phys_s);
     if (DEBUG_QT)
       cout << "impress (" << s.width() << "," << s.height() << ")\n";
     pxm.fill (Qt::transparent);
@@ -109,7 +110,7 @@
       qt_renderer_rep *ren = the_qt_renderer();
       ren->begin (static_cast<QPaintDevice*>(&pxm));
       wid->set_current_renderer(the_qt_renderer());
-      rectangle r = rectangle (0, 0, s.width(), s.height());
+      rectangle r = rectangle (0, 0, 2*s.width(), 2*s.height());
       ren->set_origin(0,0);
       ren->encode (r->x1, r->y1);
       ren->encode (r->x2, r->y2);
