anchor.diff:  
   (defun scale-to-device (cr &optional keep-rotation-p)
     (if keep-rotation-p
  -      (multiple-value-call #'scale cr (device-to-user-distance cr 1.0))
  +      (multiple-value-bind (dx dy) (device-to-user-distance cr 1.0 0.0)
  +	(scale cr (sqrt (+ (* dx dx) (* dy dy)))))
       (multiple-value-bind (x y)
   	(with-context (cr)
   	  (move-to cr 0.0 0.0)
  
positive.code:   (tx double-float)
    (ty double-float))
  
  (defbinding matrix-scale () nil
    (matrix matrix :in/return)
    (sx double-float)
    (sy double-float))
  
negative.code: ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  ;; $Id: cairo.lisp,v 1.16 2007-10-16 07:48:39 espen Exp $
  
  (in-package "CAIRO")
  
  