anchor.diff:  	       (setf (sheet-medium stream) ,old-medium))))))))
   
   (def-grecording draw-point (point-x point-y)
  -  (values point-x point-y point-x point-y))
  +  (with-transformed-position (transform point-x point-y)
  +     (values point-x point-y point-x point-y)))
   
   (def-grecording draw-points (coord-seq)
  -  (loop for (x y) on coord-seq by #'cddr
  -	minimize x into min-x
  -	minimize y into min-y
  -	maximize x into max-x
  -	maximize y into max-y
  -	finally (return (values min-x min-y max-x max-y))))
  +  (with-transformed-positions (transform coord-seq)
  +     (loop for (x y) on coord-seq by #'cddr
  +           minimize x into min-x
  +           minimize y into min-y
  +           maximize x into max-x
  +           maximize y into max-y
  +           finally (return (values min-x min-y max-x max-y)))))
   
   (def-grecording draw-line (point-x1 point-y1 point-x2 point-y2)
  -  (values (min point-x1 point-x2) (min point-y1 point-y2)
  -          (max point-x1 point-x2) (max point-y1 point-y2)))
  +  (with-transformed-position (transform point-x1 point-y1)
  +    (with-transformed-position (transform point-x2 point-y2)
  +      (values (min point-x1 point-x2) (min point-y1 point-y2)
  +              (max point-x1 point-x2) (max point-y1 point-y2)))))
   
   (def-grecording draw-lines (coord-seq)
  -  (loop for (x y) on coord-seq by #'cddr
  -	minimize x into min-x
  -	minimize y into min-y
  -	maximize x into max-x
  -	maximize y into max-y
  -	finally (return (values min-x min-y max-x max-y))))
  +  (with-transformed-positions (transform coord-seq)
  +     (loop for (x y) on coord-seq by #'cddr
  +           minimize x into min-x
  +           minimize y into min-y
  +           maximize x into max-x
  +           maximize y into max-y
  +           finally (return (values min-x min-y max-x max-y)))))
   
   (def-grecording draw-polygon (coord-seq closed filled)
  -  (loop for (x y) on coord-seq by #'cddr
  -	minimize x into min-x
  -	minimize y into min-y
  -	maximize x into max-x
  -	maximize y into max-y
  -	finally (return (values min-x min-y max-x max-y))))
  +  (with-transformed-positions (transform coord-seq)
  +     (loop for (x y) on coord-seq by #'cddr
  +           minimize x into min-x
  +           minimize y into min-y
  +           maximize x into max-x
  +           maximize y into max-y
  +           finally (return (values min-x min-y max-x max-y)))))
   
   (def-grecording draw-rectangle (left top right bottom filled)
  +  ;; XXX transformation!!!
     (values (min left right) (min top bottom) (max left right) (max top bottom)))
   
   (def-grecording draw-ellipse (center-x center-y
   			      radius-1-dx radius-1-dy radius-2-dx radius-2-dy
   			      start-angle end-angle filled)
  +  ;; XXX transformation!!!
     (let ((radius-dx (abs (+ radius-1-dx radius-2-dx)))
           (radius-dy (abs (+ radius-1-dy radius-2-dy))))
       (values (- center-x radius-dx) (- center-y radius-dy)
  
positive.code: 	 (declare (ignore x-offset y-offset))
  	 (with-slots (ink clip transform line-style text-style ,@args) record
  	   (let ((,old-medium (sheet-medium stream))
  		 (,new-medium (make-merged-medium stream ink (region-intersection clip region)
                                                    transform line-style text-style)))
  	     (unwind-protect
  		 (progn
  		   (setf (sheet-medium stream) ,new-medium)
  
negative.code:        (defmethod initialize-instance :after ((graphic ,class-name) &rest args)
  	 (declare (ignore args))
  	 (with-slots (x1 y1 x2 y2
  		      stream ink clipping-region transform
  		      line-style text-style
  		      ,@args) graphic
             (let ((,border (1+ (/ (line-style-thickness line-style) 2))))
  