anchor.diff:  associated dimensions. Also clear from the bottom of strokes to
   the bottom of the line, and from the end of the line to the end
   of the sheet."
  +  (declare (ignore old-line-width))
     (end-line line line-x1 line-y1 line-width line-height)
     (with-accessors ((line-x1 x1) (line-y1 y1)
                      (line-x2 x2) (line-y2 y2)) (line-dimensions line)
  -    ;; If a has a lesser height than the line, clear from the bottom
  -    ;; of the stroke to the bottom of the line, to avoid artifacts
  -    ;; left over from prefvious redisplays.
  +    ;; If a has a lesser height than the line, clear from the top of
  +    ;; the line stroke to the top of the stroke, to avoid artifacts
  +    ;; left over from previous redisplays.
       (do-displayed-line-strokes (stroke line)
         (let ((stroke-dimensions (stroke-dimensions stroke)))
           (with-accessors ((stroke-x1 x1) (stroke-y1 y1)
                            (stroke-x2 x2) (stroke-y2 y2)) stroke-dimensions
             (when (> line-height (dimensions-height stroke-dimensions))
  -            (clear-rectangle* stream stroke-x1 stroke-y2
  -                              stroke-x2 (+ stroke-y2 (- line-height
  -                                                        (dimensions-height stroke-dimensions))
  -                                           (stream-vertical-spacing stream)))))))
  +            (clear-rectangle* stream stroke-x1 line-y1
  +                              stroke-x2 stroke-y1)))))
       ;; Reset the dimensions of undisplayed lines.
       (do-undisplayed-line-strokes (stroke line)
         (let ((stroke-dimensions (stroke-dimensions stroke)))
  
positive.code:   (style nil))
  
  (defconstant +default-stroke-drawer-dispatcher+
    #'(lambda (stream view stroke cursor-x cursor-y default-drawing-fn)
        (funcall default-drawing-fn stream view stroke cursor-x cursor-y))
    "A simple function of six arguments that simply calls the first
  argument as a function with the remaining five arguments. Used as
  the default drawing-function of `drawing-options' objects.")
  
  (defstruct drawing-options
    "A set of options for how to display a stroke."
  
negative.code:                         (mod (+ width x-position) tab-width)))
                 (vector-push-extend width widths))
                (object
                 (multiple-value-bind (w ignore1 ignore2 ignore3 ignore4)
                     (text-size stream object
                      :text-style text-style)
                   (declare (ignore ignore1 ignore2 ignore3 ignore4))
                   (incf width w)
                   (vector-push-extend width widths)))
                (t
                 (multiple-value-bind (w ignore1 ignore2 ignore3 ignore4)
                     (text-size stream stroke-string
                      :start start :end end
                      :text-style text-style)
                   (declare (ignore ignore1 ignore2 ignore3 ignore4))
                   (incf width w)
                   (vector-push-extend width widths))))
       finally (return (values width parts widths))))
  
  (defun stroke-drawing-fn (stream view stroke cursor-x cursor-y draw)
    "Draw `stroke' to `stream' baseline-adjusted at the position (`cursor-x',
  `cursor-y'). `View' is the view object that `stroke' belongs
  to. If `draw' is true, actually draw the stroke to `stream',
  otherwise, just calculate its size. It is assumed that the buffer
  region delimited by `stroke' only contains characters. `Stroke'
  is drawn with face given by the drawing options of `stroke',
  using the default text style of `stream' to fill out any
  holes. The screen area beneath `stroke' will be cleared before
  any actual output takes place."
    (with-accessors ((start-offset stroke-start-offset)
                     (end-offset stroke-end-offset)
                     (dimensions stroke-dimensions)
  