anchor.diff:    else aValidFlag := False;
   end;
   
  -function TSliceDiffGeometryPolygonLR.ConstructPolygon(aPolyPoints: TArray<Double>): TPolygon;
  -var
  -  polygon: TPolygon;
  +procedure TSliceDiffGeometryPolygonLR.ConstructPolygon(aPolyPoints: TArray<Double>; var polygon: TPolygon);
  +var
     ele: Integer;
   begin
     setLength(polygon, 5);
  
positive.code:               //L width
                if IsNaN(curScenarioGeometryObject.value) and IsNaN(refScenarioGeometryObject.value) then
                  validL := False
                else
                  widthL := 60;
  
                //R width
                if IsNaN(curScenarioGeometryObject.value2) and IsNaN(refScenarioGeometryObject.value2) then
                  validR := False
                else
                  widthR := 60;
  
                colorsL := GetPaletteColor(curScenarioGeometryObject.texture, refScenarioGeometryObject.texture, widthL, validL);
                colorsR := GetPaletteColor(curScenarioGeometryObject.texture2, refScenarioGeometryObject.texture2, widthR, validR);
              end;
  
              if not (validR or validL) then //if neither side is valid -> draw a thin black line
              begin
                path := GeometryToPath(aExtent, aPixelWidth, aPixelHeight, curScenarioGeometryObject.fGeometry);
                DrawDefaultPath(path, aBitmap);
              end
              else //draw our polygons
              begin
                setLength(polygon, 5);
                for part in curScenarioGeometryObject.fGeometry.parts do
  
negative.code:     try
        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;
  