anchor.diff:  
   ;;; PS Surface
   
  -(defmethod allocate-foreign ((surface ps-surface) 
  -			     &key filename stream width height)
  -  (cond
  -   ((and filename stream)
  -    (error "Only one of the arguments :filename and :stream may be specified"))
  -   (filename (%ps-surface-create filename width height))
  -   (stream 
  -    (let* ((stream-id (register-user-data stream))
  -	   (location (%ps-surface-create-for-stream stream-id width height)))
  -      (%surface-set-user-data location 'stream stream-id)
  -      location))))
  +(defmethod allocate-foreign ((surface ps-surface) &rest args)
  +  (apply #'allocate-vector-surface 
  +   #'%ps-surface-create #'%ps-surface-create-for-stream args))
   
   (defbinding %ps-surface-create () pointer
     (filename pathname)
  
positive.code: (defbinding %image-surface-create-from-png () pointer
    (filename pathname))
  
  (defbinding surface-write-to-png () status
    (surface surface)
    (filename pathname))
  
  
  ;;; PDF Surface
  
  (defmethod allocate-foreign ((surface pdf-surface)
  			     &key filename stream width height)
    (cond
     ((and filename stream)
      (error "Only one of the arguments :filename and :stream may be specified"))
     (filename (%pdf-surface-create filename width height))
     (stream 
      (let* ((stream-id (register-user-data stream))
  	   (location (%pdf-surface-create-for-stream stream-id width height)))
        (%surface-set-user-data location 'stream stream-id)
        location))))
  
  
  (defbinding %pdf-surface-create () pointer
    (filename pathname)
  
negative.code:      (= xx 1.0d0) (= yx 0.0d0) (= xy 0.0d0)
       (= yy 1.0d0) (= x0 0.0d0) (= y0 0.0d0))))
  
  (defbinding matrix-init-translate (tx ty &optional (matrix (make-instance 'matrix))) nil
    (matrix matrix :in/return)
    (tx double-float)
    (ty double-float))
  
  (defbinding matrix-init-scale (sx &optional (sy sx) (matrix (make-instance 'matrix))) nil
    (matrix matrix :in/return)
    (sx double-float)
    (sy double-float))
  
  (defbinding matrix-init-rotate (rotation &optional (matrix (make-instance 'matrix))) nil
    (matrix matrix :in/return)
    (rotation double-float))
  
  (defbinding matrix-translate () nil
    (matrix matrix :in/return)
  