anchor.diff:                      //left (value and colors)
                       if not IsNaN(isgop.Value.value) then
                       begin
  -                      xd := {(1+}isgop.Value.value*capacityFactor{)}*xn/l;
  -                      yd := {(1+}isgop.Value.value*capacityFactor{)}*yn/l;
  +                      xd := isgop.Value.value*capacityFactor*xn/l;
  +                      yd := isgop.Value.value*capacityFactor*yn/l;
   
                         // todo: wrong rotation direction..
                         polygon[2].X := x+xd;
  
positive.code:   isgop: TPair<TWDID, TSliceGeometryObject>;
    refObj: TSliceGeometryObject;
    path: TPathData;
  begin
    //Result := gtsFailed;
    aBitmap.Canvas.BeginScene;
    try
      aBitmap.Canvas.Clear(0);
      aBitmap.Canvas.Fill.Kind := TBrushKind.Solid;
      fCurrentSlice.fDataLock.BeginRead;
      fRefSlice.fDataLock.BeginRead;
      try
        for isgop in (fCurrentSlice as TSliceGeometryI).fGeometries do
        begin
          if aExtent.Intersects(isgop.Value.fExtent) then
          begin
            path := GeometryToPath(aExtent, aPixelWidth, aPixelHeight, isgop.Value.fGeometry);
            try
  
negative.code:   isgop: TPair<TWDID, TSliceGeometryICLRObject>;
    polygon: TPolygon;
    capacityFactor: Double;
    maxValue: Double;
    maxPixels: Double;
    bufferExtent: TExtent;
    // polygon drawing
    part: TWDGeometryPart;
    point: TWDGeometryPoint;
    path: TPathData;
    x, y, xPrev, yPrev, xn, yn, xd, yd: Double;
    l: Double;
    colors: TGeoColors;
    colors2: TGeoColors;
  begin
  