anchor.diff:  implementation
   uses KM_PNG;
   
  +const
  +  BG_COLOR = $FFAF6B6B;
  +
   
   { TKMFontDataEdit }
   procedure TKMFontDataEdit.CreateFont(aFontName: string; aFontSize: Byte; aFontStyle: TFontStyles; aAntialias: Boolean; const aChars: array of WideChar);
  
positive.code:       srcX := Round(Letters[I].u1 * fTexSizeX);
        srcY := Round(Letters[I].v1 * fTexSizeY);
        srcPixel := (srcY + M) * fTexSizeX + srcX + L;
        dstPixel := ((I div 256) * cellY + M + 1 + aPadding.Top) * pngWidth + (I mod 256) * cellX + L + 1 + aPadding.Left;
        data[dstPixel] := fAtlases[Letters[I].AtlasId].TexData[srcPixel];
      end;
    end;
  
negative.code: procedure TKMFontDataEdit.ExportGridPng(const aFilename: string; aPadding: TRect);
  var
    cellX, cellY, pngWidth, pngHeight: Word;
    I, M, L: Integer;
    chWidth, chHeight: Byte;
    srcX, srcY: Word;
    dstPixel, srcPixel: Cardinal;
    data: TKMCardinalArray;
  begin
    cellX := MaxLetterWidth + aPadding.Left + aPadding.Right;
    cellY := MaxLetterHeight + aPadding.Top + aPadding.Bottom;
    pngWidth := 256 * cellX;
    pngHeight := 256 * cellY;
  
    SetLength(data, pngWidth * pngHeight);
  
    //fill everything so we later cut the letters from it
    for I := 0 to pngWidth * pngHeight - 1 do
      data[I] := BG_COLOR;
  
    //Draw letters
    for I := 0 to fCharCount - 1 do
  