anchor.diff:      try
         aBitmap.Canvas.Clear(0);
         aBitmap.Canvas.Fill.Kind := TBrushKind.Solid;
  +      setLength(polygon, 4);
         for isgop in fLocations do
         begin
           point := GeometryToPoint(aExtent, aPixelWidth, aPixelHeight, isgop.Value.lcoation);
  
positive.code:   colors: TGeoColors;
    radiusPoint: TPointF;
    valFrom, valTo: Double;
  begin
    Result := gtsFailed; // sentinel
    if Assigned(fPalette) then
  
negative.code: //            aBitmap.Canvas.FillEllipse(rect, 1);
  
              radiusPoint := PointF(20, 20);
              aBitmap.Canvas.Fill.Color := TAlphaColorRec.White;
              aBitmap.Canvas.FillArc(point, radiusPoint, 0, 360, 1);
  
              valFrom := -90;
              valTo := isgop.Value.value * 360;
  
              aBitmap.Canvas.Fill.Color := colors.fillColor;
              aBitmap.Canvas.FillArc(point, radiusPoint, valFrom, valTo, 1);
  
              polygon[0].X := point.X + Round(radiusPoint.X * Cos(DegToRad(Offset - valFrom)));
              polygon[0].Y := point.Y - Round(radiusPoint.X * Sin(DegToRad(Offset - valFrom)));
              polygon[1].X := point.X;
              polygon[1].Y := point.Y;
              polygon[2].X := point.X + Round(radiusPoint.X * Cos(DegToRad(Offset + 360 - valTo - valFrom)));
              polygon[2].Y := point.Y - Round(radiusPoint.X * Sin(DegToRad(Offset + 360 - valTo - valFrom)));
              polygon[3].X := point.X + Round(radiusPoint.X * Cos(DegToRad(Offset - valFrom)));
              polygon[3].Y := point.Y - Round(radiusPoint.X * Sin(DegToRad(Offset - valFrom)));
  
              if valTo <= 180 then
                polyColor := colors.fillColor
              else
                polyColor := TAlphaColorRec.White;
  
              if valTo <360 then
              begin
                aBitmap.Canvas.Fill.Color := polyColor;
                aBitmap.Canvas.FillPolygon(polygon, 1);
              end;
            end;
            if colors.outlineColor<>0 then
            begin
  