anchor.diff:            if bufferExtent.Intersects(isgop.Value.fExtent) then
             begin
               colors := fPalette.ValueToColors(isgop.Value.texture);
  -            aBitmap.Canvas.Stroke.Color := colors.mainColor;
  -
  -            // geometry is multi line, create polygons to right with width based on capacity
  -            setLength(polygon, 5); // will auto close so only 4 points needed
  -            for part in isgop.Value.fGeometry.parts do
  -            begin
  -              x := NaN;
  -              for point in part.points do
  -              begin
  -                // recalc coordinates relative to extent and in pixels
  -                xPrev := x;
  -                yPrev := y;
  -                x := (point.X-aExtent.XMin)/aPixelWidth;
  -                y := (aExtent.YMax-point.Y)/aPixelHeight;
  -                if not IsNaN(xPrev) then
  -                begin
  -                  aBitmap.Canvas.StrokeThickness := isgop.Value.value*capacityFactor;
  -                  if colors.fillColor<>0
  -                  then aBitmap.Canvas.DrawLine(TPointF.Create(xPrev, yPrev), TPointF.Create(x,y), 1);
  -                  if colors.outlineColor<>0
  -                  then aBitmap.Canvas.DrawPolygon(polygon, 1);
  -                end;
  +            path := GeometryToPath(aExtent, aPixelWidth, aPixelHeight, isgop.Value.fGeometry);
  +              try
  +                aBitmap.Canvas.Stroke.Color := colors.mainColor;
  +                aBitmap.Canvas.StrokeThickness := isgop.Value.value*capacityFactor;
  +                aBitmap.Canvas.DrawPath(path, 1);
  +              finally
  +                path.Free;
                 end;
  -            end;
  -
             end;
           end;
         finally
  
positive.code: begin
    // recalc extent
    fMaxExtent := fCurrentSlice.fMaxExtent.Intersection(fRefSlice.fMaxExtent);
    fLayer.signalRefresh(timeStamp);
  end;
  
  
negative.code:   validL, validR: Boolean;
    refObj: TSliceGeometryICLRObject;
  begin
    widthL := Double.NaN;
    widthR := Double.NaN;
    Result := gtsFailed; // sentinel
    if Assigned(fPalette) then
    begin
  