anchor.diff:    part: TWDGeometryPart;
     point: TWDGeometryPoint;
     path: TPathData;
  -  x, y, xPrev, yPrev, xn, yn: Double;
  +  x, y, xPrev, yPrev, xn, yn, xd, yd: Double;
     l: Double;
     bufferExtent: TExtent;
  -  colors: TGeoColors;
  -  colors2: TGeoColors;
  +  widthL, widthR: Double;
  +  colorsL: TGeoColors;
  +  colorsR: TGeoColors;
  +  validL, validR: Boolean;
     refObj: TSliceGeometryICLRObject;
   begin
     Result := gtsFailed; // sentinel
  
positive.code:                 end;
                end;
              end;
            end;
          end;
          // todo: process ref geometries not in current? or just skip..
  
negative.code:                     yn := xPrev-x;
                      // normalize..
                      l := sqrt((xn*xn)+(yn*yn));
                      polygon[0].X := xPrev;
                      polygon[0].Y := yPrev;
                      polygon[1].X := x;
                      polygon[1].Y := y;
                      polygon[4].X := xPrev;
                      polygon[4].Y := yPrev;
  
                      //draw right side
                      if validR then
                      begin
                        xd := {(1+}widthR*capacityFactor{)}*xn/l;
                        yd := {(1+}widthR*capacityFactor{)}*yn/l;
  
                        polygon[2].X := x-xd;
                        polygon[2].Y := y-yd;
                        polygon[3].X := xPrev-xd;
                        polygon[3].Y := yPrev-yd;
  
                        // draw
                        if colorsR.fillColor<>0  then
                        begin
                          aBitmap.Canvas.Fill.Color := colorsR.fillColor;
                          aBitmap.Canvas.FillPolygon(polygon, 1);
                        end;
                        if colorsR.outlineColor<>0 then
                        begin
                          aBitmap.Canvas.Stroke.Color := colorsR.outlineColor;
                          aBitmap.Canvas.DrawPolygon(polygon, 1);
                        end;
                      end;
                      //draw left side
                      if validL then
                      begin
                        xd := {(1+}widthL*capacityFactor{)}*xn/l;
                        yd := {(1+}widthL*capacityFactor{)}*yn/l;
  
                        // todo: wrong rotation direction..
                        polygon[2].X := x+xd;
                        polygon[2].Y := y+yd;
                        polygon[3].X := xPrev+xd;
                        polygon[3].Y := yPrev+yd;
                        // draw left
                        if colorsL.fillColor<>0 then
                        begin
                          aBitmap.Canvas.Fill.Color := colorsL.fillColor;
                          aBitmap.Canvas.FillPolygon(polygon, 1);
                        end;
                        if colorsL.outlineColor<>0 then
                        begin
                          aBitmap.Canvas.Stroke.Color := colorsL.outlineColor;
                          aBitmap.Canvas.DrawPolygon(polygon, 1);
                        end;
                      end;
  