anchor.diff:                              (* scale top)
                               near
                               far)))
  -        (gl:load-matrix proj)))))
  -
  -;; ----------------------------------------------------------------------------
  -(defun model-view (mat eye)
  -  "Uses the matrix to set the model-view matris"
  -  (gl:matrix-mode :modelview) ; view
  +        (gl:load-matrix (sb-cga:matrix* proj Eye<-VWorld)))))
     (cond ((eq eye :right) (gl:draw-buffer :back-right))
  -        (t (gl:draw-buffer :back-left)))
  -  (gl:load-identity)
  -  (gl:mult-matrix mat))
  +        (t (gl:draw-buffer :back-left))))
   
   ;; -----------------------------------------------------------------------scene
  -(defmethod run ((self Scene))
  -  (with-slots (backgrounds navigationInfos viewpoints shapes transforms device) self
  -    (with-slots (screen head 2d-mouse) device
  +(defmethod run((self Scene))
  +  (with-slots (backgrounds navigationInfos viewpoints shapes transforms) self
       (let ((BACKGROUND (if (first backgrounds)
                             (first backgrounds)
                             (make-instance 'Background)))
  
positive.code:                          (first viewpoints)
                           (make-instance 'Viewpoint))))
        (run BACKGROUND)
        (let* ((width (width screen))
               (height (height screen))
               (ipd (iod head))
  
negative.code:           (sb-cga:matrix* Tx R))))))
    
  ;; ----------------------------------------------------------------------------
  (defun projection (Eye<-Screen Eye<-VWorld width height &key eye)
    "Sets the projection matrix based on the center of the screen"
    (gl:matrix-mode :projection)          ; projection
    (let ((x (sb-cga:mref Eye<-Screen 0 3))
          (y (sb-cga:mref Eye<-Screen 1 3))
          (z (sb-cga:mref Eye<-Screen 2 3)))
      (let ((left (- x (/ width 2)))
            (right (+ x (/ width 2)))
            (bottom (- y (/ height 2)))
  