anchor.diff:                       (transform-parameters transform-parameters)
                        (transform transform))
           viewer
  -      (let ((rads (mod (* pi degrees (/ 180)) (* 2 pi))))
  -        (unless (equal (seventh transform-parameters) rads)
  -          (setf (seventh transform-parameters) rads
  -                transform nil))))
  -    (handle-repaint viewer (sheet-region viewer))))
  -
  -(defun y-scale-callback (gadget scale)
  -  (declare (ignore gadget))
  -  (let ((viewer (find-pane-named *application-frame* 'viewer)))
  -    (with-accessors ((image gadget-value)
  -                     (transform-parameters transform-parameters)
  -                     (transform transform))
  -        viewer
  -      (unless (equal (first transform-parameters) scale)
  -        (setf (first transform-parameters) scale
  -              transform nil)))
  -    (handle-repaint viewer (sheet-region viewer))))
  -
  -(defun x-scale-callback (gadget scale)
  -  (declare (ignore gadget))
  -  (let ((viewer (find-pane-named *application-frame* 'viewer)))
  -    (with-accessors ((image gadget-value)
  -                     (transform-parameters transform-parameters)
  -                     (transform transform))
  -        viewer
  -      (unless (equal (second transform-parameters) scale)
  -        (setf (second transform-parameters) scale
  -              transform nil)))
  -    (handle-repaint viewer (sheet-region viewer))))
  +      (let ((param 6)
  +            (rads (mod (* pi degrees (/ 180)) (* 2 pi))))
  +        (unless (equal (elt transform-parameters param) rads)
  +          (setf (elt transform-parameters param) rads
  +                transform nil))))
  +    (handle-repaint viewer (sheet-region viewer))))
  +
  +(defun y-shear-callback (gadget shear)
  +  (declare (ignore gadget))
  +  (let ((viewer (find-pane-named *application-frame* 'viewer)))
  +    (with-accessors ((image gadget-value)
  +                     (transform-parameters transform-parameters)
  +                     (transform transform))
  +        viewer
  +      (let ((param 4))
  +        (unless (equal (elt transform-parameters param) shear)
  +          (setf (elt transform-parameters param) shear
  +                transform nil))))
  +    (handle-repaint viewer (sheet-region viewer))))
  +
  +(defun x-shear-callback (gadget shear)
  +  (declare (ignore gadget))
  +  (let ((viewer (find-pane-named *application-frame* 'viewer)))
  +    (with-accessors ((image gadget-value)
  +                     (transform-parameters transform-parameters)
  +                     (transform transform))
  +        viewer
  +      (let ((param 5))
  +        (unless (equal (elt transform-parameters param) shear)
  +          (setf (elt transform-parameters param) shear
  +                transform nil))))
  +    (handle-repaint viewer (sheet-region viewer))))
  +
   
   (define-application-frame spectacle ()
     ()
  
positive.code:           :orientation :horizontal
            :drag-callback #'theta-callback
            :value-changed-callback 'theta-callback)
     (interactor :interactor
                 :text-style (make-text-style :sans-serif nil nil)
                 :min-height 100))
  
negative.code:                             (labelling (:label "X Scale")
                                x-scale)
                              (labelling (:label "Theta")
                                theta)
                              (labelling (:label "Y Shear")
                                y-shear)
                              (labelling (:label "X Shear")
                                x-shear)
                              reset-button))))
                (1/5 interactor)))))
  
  (defun reset-sliders ()
    (let ((y-scale-slider (find-pane-named *application-frame* 'y-scale))
          (x-scale-slider (find-pane-named *application-frame* 'x-scale))
          (theta-slider (find-pane-named *application-frame* 'theta))
          (y-shear-slider (find-pane-named *application-frame* 'y-shear))
          (x-shear-slider (find-pane-named *application-frame* 'x-shear)))
      (setf (gadget-value y-scale-slider) 1.0d0)
      (setf (gadget-value x-scale-slider) 1.0d0)
      (setf (gadget-value y-shear-slider) 0.0d0)
      (setf (gadget-value x-shear-slider) 0.0d0)
      (setf (gadget-value theta-slider) 0.0d0)))
  
  (defun reset-transform-parameters (transform-parameters)
    (setf (elt transform-parameters 0) 1d0
          (elt transform-parameters 1) 1d0
          (elt transform-parameters 4) 0d0
          (elt transform-parameters 5) 0d0
          (elt transform-parameters 6) 0d0))
  
  (defun opticl-image-to-climi-rgb-pattern (image)
    (etypecase image
  