         # linear interpolation adds an absolute line to the path
         if @mode is 'i'
           # add the segment to the path
-          @trace.path += "L#{end.x} #{end.y}"
+          # if it's a round tool or we're in region mode, just add the point
+          if @trace.region or @tools[@currentTool].stroke['stroke-linecap']?
+            @trace.path += "L#{end.x} #{end.y}"
+          # else we're stroking a rectangular aperture, so that's frustrating
+          else
+            width = @tools[@currentTool].pad[0].rect.width
+            height = @tools[@currentTool].pad[0].rect.height
+            @trace.path += rectangleStrokePath start, end, width, height
           # add the segment to the bbox
           if @trace.region
             @addBbox {

            @addBbox @tools[@currentTool].bbox end.x, end.y
        # are interpolation adds an eliptical (circular) arc to the path
        else if @mode is 'cw' or @mode is 'ccw'
          r = Math.sqrt end.i**2 + end.j**2
          sweep = if @mode is 'cw' then 0 else 1
          large = 0


      # finally, if it's a 1, we've got an interpolate
      else if op is '1'
        # throw if tool isn't traceable
        if not @trace.region and not @tools[@currentTool].stroke
          throw new Error "tool #{@currentTool} is not a strokeable tool"
        # if there's no path yet, we need to move to the current point
        unless @trace.path
          @trace.path = "M#{start.x} #{start.y}"
