anchor.diff:  
   (defmethod process-event ((event damage-event))
     (let ((window (window event)))
  -    (multiple-value-bind (x y w h)
  -        (clip-rectangle (x event) (y event) (width event) (height event)
  -                        0 0 (width window) (height window))
  -      (expand-clip-rectangle (+ x (window-x window)) (+ y (window-y window))
  -                             w h))))
  +    (multiple-value-bind (win-x win-y)
  +        (window-to-screen-coordinates window (x event) (y event))
  +      (multiple-value-bind (clip-x clip-y clip-w clip-h)
  +          (clip-rectangle win-x win-y (width event) (height event)
  +                          (window-x window) (window-y window) (width window) (height window))
  +        (expand-clip-rectangle clip-x clip-y clip-w clip-h)))))
   
   (defun damage-window (window x y width height)
     "Send a window damage event to the compositor."
  
positive.code:           *clip-rect-height* (- y2 *clip-rect-y*))
      #+debug-dirty-rects(format t "Expanded clip rect to ~D,~D ~D,~D~%"
              *clip-rect-x* *clip-rect-y* *clip-rect-width* *clip-rect-height*)))
  
  (defun 2d-array (data &optional (element-type 't))
    (let* ((width (length (first data)))
  
negative.code: (defvar *mouse-y* 0)
  (defvar *mouse-buttons* 0)
  
  (defvar *drag-window* nil)
  (defvar *drag-x-origin* nil)
  (defvar *drag-y-origin* nil)
  (defvar *drag-x* nil)
  (defvar *drag-y* nil)
  (defvar *passive-drag* nil
    "Set to true when the drag was compositor-initiated.
  A passive drag sends no drag events to the window.")
  
  (defun activate-window (window)
    "Make WINDOW the active window."
    (when (not (eql window *active-window*))
      (when *active-window*
        (send-event *active-window* (make-instance 'window-activation-event
                                                   :window *active-window*
                                                   :state nil)))
      (setf *active-window* window)
      (send-event window (make-instance 'window-activation-event
                                        :window window
                                        :state t))
      (when (not (eql (layer window) :bottom))
        (setf *window-list* (remove window *window-list*))
        (push window *window-list*)
        ;; Layering change, redraw the whole window.
        (expand-clip-rectangle-by-window window))))
  
  (defmethod process-event ((event mouse-event))
    ;; Update positions and buttons
    (let* ((buttons (mouse-button-state event))
  