anchor.diff:        StrList.Clear;
         StrList.Append(IntToStr(MinX - pngWidth div 2));
         StrList.Append(IntToStr(MinY - pngHeight div 2));
  -      //FIXME: Do SizeNoShadow properly
  -      StrList.Append(IntToStr(0));
  -      StrList.Append(IntToStr(0));
  -      StrList.Append(IntToStr(newWidth-1));
  -      StrList.Append(IntToStr(newHeight-1));
  +      StrList.Append(IntToStr(NoShadMinX - MinX));
  +      StrList.Append(IntToStr(NoShadMinY - MinY));
  +      StrList.Append(IntToStr(newWidth-1 - (MaxX - NoShadMaxX)));
  +      StrList.Append(IntToStr(newHeight-1 - (MaxY - NoShadMaxY)));
   
         ForceDirectories(ExeDir+'Sprites\3\');
         StrList.SaveToFile(ExeDir+'Sprites\3\'+format('3_%d.txt', [aPicOffset + Step]));
  
positive.code:   pngWidth, pngHeight, newWidth, newHeight: Word;
    pngBase, pngShad, pngTeam, pngCrop, pngCropMask: TKMCardinalArray;
    X, Y, MinX, MinY, MaxX, MaxY: Integer;
    StrList: TStringList;
    dirBase, dirShad, dirTeam: string;
  begin
  
negative.code:     MinY := MaxInt;
      MaxX := -1;
      MaxY := -1;
      NoShadMinX := MaxInt;
      NoShadMinY := MaxInt;
      NoShadMaxX := -1;
      NoShadMaxY := -1;
      for Y := 0 to pngHeight-1 do
      begin
        for X := 0 to pngWidth-1 do
  