anchor.diff:    (with-bounding-rectangle* (x1 y1 x2 y2) (scroll-bar-thumb-bed-region sb)
       (multiple-value-bind (minv maxv) (gadget-range* sb)
         (multiple-value-bind (v) (gadget-value sb)
  -        (let ((ts (* 1/3 (- maxv minv))))
  +        (let ((ts (scroll-bar-thumb-size sb)))
             (let ((ya (translate-range-value v minv (+ maxv ts) y1 y2))
                   (yb (translate-range-value (+ v ts) minv (+ maxv ts) y1 y2)))
               (make-rectangle* x1 ya x2 yb)))))))
  
positive.code:    (scroll-up-page-callback :initarg :scroll-up-page-callback
                              :initform nil
                              :reader scroll-bar-scroll-up-page-callback)
     
     (thumb-size :initarg :thumb-size :initform 1/4
                 :reader scroll-bar-thumb-size) ))
  
  (defmethod drag-callback ((pane scroll-bar) client gadget-id value)
    (declare (ignore client gadget-id))
  
negative.code:       (case event-state
          (:dragging
           (let* ((y-new-thumb-top (- y drag-dy))
                  (ts (scroll-bar-thumb-size sb))
                  (new-value (translate-range-value y-new-thumb-top
                                                    (bounding-rectangle-min-y (scroll-bar-thumb-bed-region sb))
                                                    (bounding-rectangle-max-y (scroll-bar-thumb-bed-region sb))
  