anchor.diff:  
       //Avoid repeated computing (+2% performance)
       I1 := max(Pos.Y-aRadius, 0);
  -    I2 := min(Pos.Y+aRadius, MapY-1);
  +    I2 := min(Pos.Y+aRadius, fMapY-1);
       K1 := max(Pos.X-aRadius, 0);
  -    K2 := min(Pos.X+aRadius, MapX-1);
  +    K2 := min(Pos.X+aRadius, fMapX-1);
       SqrRadius := Sqr(aRadius);
   
       //Inline maths here to gain performance
  
positive.code: 
  procedure TKMFogOfWar.SetMapSize(X,Y: Word);
  begin
    MapX := X;
    MapY := Y;
    SetLength(fRevealedToMax, Y, X);
    SetLength(Revelation, Y, X);
    SetLength(RenderRevelation, Y, X);
  
negative.code: procedure TKMFogOfWar.SyncFOW(aFOW: TKMFogOfWar);
  var I,K: Word;
  begin
    for I := 0 to fMapY - 1 do
      for K := 0 to fMapX - 1 do
      begin
        Revelation[I, K] := Max(Revelation[I, K], aFOW.Revelation[I, K]);
        RenderRevelation[I, K] := Max(RenderRevelation[I, K], aFOW.RenderRevelation[I, K]);
  