anchor.diff:    (declare (ignore region))
     (with-special-choices (pane)
       (let ((tr (vertical-gadget-orientation-transformation pane)))
  -      (with-bounding-rectangle* (minx miny maxx maxy) (transform-region tr (sheet-region pane))
  -        (with-drawing-options (pane :transformation tr)
  -          (with-drawing-options (pane :clipping-region  (transform-region tr
  -                                                          (region-difference
  -                                                            (sheet-region pane)
  -                                                            (gadget-bed-region pane))))
  -            (draw-rectangle* pane minx miny maxx maxy :filled t :ink *3d-normal-color*))
  -          ;; draw bed
  -          (with-bounding-rectangle* (x1 y1 x2 y2) (gadget-bed-region pane)
  -            (with-drawing-options (pane :clipping-region  (transform-region tr
  -                                                            (region-difference
  -                                                              (sheet-region pane)
  -                                                              (gadget-thumb-region pane))))
  -              (multiple-value-bind (x1 y1 x2 y2) (values (+ x1 1) (+ y1 1)
  -                                                         (- x2 1) (- y2 1))
  -                (draw-rectangle* pane x1 y1 x2 y2 :ink (pane-background pane)))
  -              (draw-bordered-polygon pane
  -                                     (polygon-points (make-rectangle* x1 y1 x2 y2))
  -                                     :style :inset
  -                                     :border-width 1)))
  -          ;; draw thumb
  -          (with-bounding-rectangle* (x1 y1 x2 y2) (gadget-thumb-region pane)
  -            (let ((x2 (- x2 1)))
  -              (draw-rectangle* pane x1 y1 x2 y2 :ink (effective-gadget-foreground pane))
  -              ;; white outline
  -              (draw-line* pane x1 y2 x1 y1 :ink +white+)
  -              (draw-line* pane x2 y1 x1 y1 :ink +white+)
  -              ;; now for the gray inline
  -              (let ((x1 (+ x1 2))
  -                    (y1 (+ y1 2))
  -                    (x2 (- x2 1))
  -                    (y2 (- y2 1)))
  -                (draw-line* pane x1 y2 (+ x2 1) y2 :ink +gray58+)
  -                (draw-line* pane x2 y1 x2 (+ y2 1) :ink +gray58+))
  -              ;; now for the black outline
  -              (draw-line* pane x1 y2 (+ x2 1) y2 :ink +black+)
  -              (draw-line* pane x2 y1 x2 (+ y2 1) :ink +black+))
  -            ;; draw decoration in the thumb
  -            (let* ((middle (/ (+ y1 y2) 2))
  -                   (y1     (- middle 1))
  -                   (y2     middle)
  -                   (x1     (+ x1 2))
  -                   (x2     (- x2 3)))
  -              (draw-line* pane x1 y1 x2 y1       :ink +gray58+)
  -              (draw-line* pane x1 y2 (+ x2 1) y2 :ink +white+)
  -              (draw-line* pane x2 y1 x2 (+ y2 1) :ink +white+))))))))
  +      (let ((transformed-sheet (transform-region tr (sheet-region pane))))
  +        (with-bounding-rectangle* (minx miny maxx maxy)
  +            transformed-sheet
  +          (with-drawing-options (pane :transformation tr)
  +            ; This region-difference is a bit weird
  +            ; the gadget-bed-region seems to be being transformed by the with-drawing-options
  +            ; but the sheet-region itself not, which I guess makes some kind of sense
  +            ; -- CHECKME
  +            (with-drawing-options (pane :clipping-region (region-difference
  +                                                           transformed-sheet
  +                                                           (gadget-bed-region pane)))
  +              (draw-rectangle* pane minx miny maxx maxy :filled t :ink *3d-normal-color*))
  +            ;; draw bed
  +            (with-bounding-rectangle* (x1 y1 x2 y2) (gadget-bed-region pane)
  +              (with-drawing-options (pane :clipping-region (region-difference
  +                                                             transformed-sheet
  +                                                             (gadget-thumb-region pane)))
  +                (multiple-value-bind (x1 y1 x2 y2) (values (+ x1 1) (+ y1 1)
  +                                                           (- x2 1) (- y2 1))
  +                  (draw-rectangle* pane x1 y1 x2 y2 :ink (pane-background pane)))
  +                (draw-bordered-polygon pane
  +                                       (polygon-points (make-rectangle* x1 y1 x2 y2))
  +                                       :style :inset
  +                                       :border-width 1)))
  +            ;; draw thumb
  +            (with-bounding-rectangle* (x1 y1 x2 y2) (gadget-thumb-region pane)
  +               (draw-up-box pane x1 y1 x2 y2 (effective-gadget-foreground pane))
  +               #+nil
  +               (let ((x2 (- x2 1)))
  +                  (draw-rectangle* pane x1 y1 x2 y2 :ink (effective-gadget-foreground pane))
  +                  ;; white outline
  +                  (draw-line* pane x1 y2 x1 y1 :ink +white+)
  +                  (draw-line* pane x2 y1 x1 y1 :ink +white+)
  +                  ;; now for the gray inline
  +                  (let ((x1 (+ x1 2))
  +                        (y1 (+ y1 2))
  +                        (x2 (- x2 1))
  +                        (y2 (- y2 1)))
  +                    (draw-line* pane x1 y2 (+ x2 1) y2 :ink +gray58+)
  +                    (draw-line* pane x2 y1 x2 (+ y2 1) :ink +gray58+))
  +                  ;; now for the black outline
  +                  (draw-line* pane x1 y2 (+ x2 1) y2 :ink +black+)
  +                  (draw-line* pane x2 y1 x2 (+ y2 1) :ink +black+))
  +                ;; draw decoration in the thumb
  +                (let* ((middle (/ (+ y1 y2) 2))
  +                       (y1     (- middle 1))
  +                       (y2     middle)
  +                       (x1     (+ x1 2))
  +                       (x2     (- x2 3)))
  +                  (draw-line* pane x1 y1 x2 y1       :ink +gray58+)
  +                  (draw-line* pane x1 y2 (+ x2 1) y2 :ink +white+)
  +                  (draw-line* pane x2 y1 x2 (+ y2 1) :ink +white+)))))))))
   
   ; Scrollbar
   
  
positive.code: (defconstant +pixie-slider-thumb-height+      34)
  (defconstant +pixie-slider-thumb-half-width+   8)
  
  (defclass pixie-slider-pane (pixie-gadget slider-pane arm/disarm-repaint-mixin enter/exit-arms/disarms-mixin)
    ((dragging
      :initform nil)
     (drag-delta
  
negative.code:           (cond
             ((or (not pressedp)
                  (eq dragging :outside))
              (draw-up-box pane x1 y1 x2 y2 (effective-gadget-foreground pane)))
             (pressedp
              (draw-down-box pane x1 y1 x2 y2 (effective-gadget-foreground pane)))))))))
  