anchor.diff:    protected
       // tile generation
       function GenerateTileCalc(const aExtent: TExtent; aBitmap: FMX.Graphics.TBitmap; aPixelWidth, aPixelHeight: Double): TGenerateTileStatus; override;
  +    procedure UpdateBufferExtent(const aExtent: TExtent; capacityFactor, aPixelWidth, aPixelHeight: Double; var bufferExtent: TExtent);
       procedure DrawDefaultPath(path: TPathData; aBitmap: FMX.Graphics.TBitmap);
       function CalculateWidth(aActiveValue, aRefValue: Double; var aValidFlag: Boolean): Double; Virtual;
       function GetPaletteColor(aActiveTexture, aRefTexture: Double; var aValidFlag: Boolean): TGeoColors;
  
positive.code:       aBitmap.Canvas.Clear(0);
        aBitmap.Canvas.Fill.Kind := TBrushKind.Solid;
        capacityFactor := IfThen((aExtent.YMax <> aExtent.YMin), 0.001/Abs(aExtent.YMax-aExtent.YMin), 0);
        bufferExtent := aExtent.Inflate(1.3); // todo: make dependent on max values like TSlideGeometryPolygonLR
        fCurrentSlice.fDataLock.BeginRead;
        fRefSlice.fDataLock.BeginRead;
        try
  
negative.code:   else Log.WriteLn('TSliceDiffGeometryPolygonLR layer '+fLayer.LayerID.ToString+': no palette defined', llError);
  end;
  
  procedure TSliceDiffGeometryPolygonLR.UpdateBufferExtent(const aExtent: TExtent; capacityFactor, aPixelWidth, aPixelHeight: Double; var bufferExtent: TExtent);
  var
    maxValue: Double;
    maxPixels: Double;
    isgop: TPair<TWDID, TSliceGeometryPolygonLRObject>;
  begin
    maxValue := double.NaN;
    for isgop in (fCurrentSlice as TSliceGeometryPolygonLR).fGeometries do
    begin
      if not isgop.Value.value.IsNan then
      begin
        if maxValue.IsNan or (maxValue<isgop.Value.value)
        then maxValue := isgop.Value.value;
      end;
      if not isgop.Value.value2.IsNan then
      begin
        if maxValue.IsNan or (maxValue<isgop.Value.value2)
        then maxValue := isgop.Value.value2;
      end;
    end;
    // adjust extent to max dynamic width of geometry
    if maxValue.IsNan
    then maxPixels := 0
    else maxPixels := ceil(abs(maxValue*capacityFactor));
    bufferExtent := aExtent.Inflate(maxPixels*aPixelWidth, maxPixels*aPixelHeight);
  end;
  
  procedure TSliceDiffGeometryPolygonLR.DrawDefaultPath(path: TPathData; aBitmap: FMX.Graphics.TBitmap);
  begin
    try
  