anchor.diff:  
   (defun update-canvas-pixel-ratio (canvas pixel-ratio)
     (bodge-canvas:update-canvas-pixel-ratio (%handle-of canvas) pixel-ratio))
  -
  -
  -(define-system-function make-image-paint graphics-system (canvas image)
  -  (let* ((image (make-canvas-image canvas image))
  -         (paint (bodge-canvas:make-image-paint image)))
  -    (flet ((%destroy-image ()
  -             (destroy-canvas-image canvas image)))
  -      (trivial-garbage:finalize paint #'%destroy-image))))
  
positive.code:              (render-canvas ,this #'%render)))))))
  
  
  (defun make-canvas-image (canvas image)
    (with-slots (image-cache) canvas
      (let ((image (bodge-canvas:make-rgba-image (%handle-of canvas)
                                                 (simple-array-of (ge.rsc:image->foreign-array image))
                                                 (ge.rsc:image-width image)
                                                 (ge.rsc:image-height image))))
        (setf (gethash image image-cache) image))))
  
  
  (defun destroy-canvas-image (canvas image)
    (with-slots (image-cache) canvas
      (when (remhash image image-cache)
        (run (for-graphics ()
               (bodge-canvas:destroy-image (%handle-of canvas) image))))))
  
  
  (defun canvas-width (&optional (canvas *canvas*))
  
negative.code: 
  
  (defclass canvas (disposable)
    ((handle :initarg :handle :reader %handle-of)))
  
  
  (define-destructor canvas (handle)
    (run (for-graphics ()
           (bodge-canvas:destroy-canvas handle))))
  
  
  