diff --git a/OpenRA.Mods.Common/UtilityCommands/ConvertSpriteToPngCommand.cs b/OpenRA.Mods.Common/UtilityCommands/ConvertSpriteToPngCommand.cs index 9306108d31b7..d2d1fa4f1f93 100644 --- a/OpenRA.Mods.Common/UtilityCommands/ConvertSpriteToPngCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/ConvertSpriteToPngCommand.cs @@ -71,11 +71,14 @@ void IUtilityCommand.Run(Utility utility, string[] args) var pngData = frame.Data; if (frameSize != frame.Size) { + var width = Math.Min(frame.Size.Width, frameSize.Width - offset.X); + var height = Math.Min(frame.Size.Height, frameSize.Height - offset.Y); pngData = new byte[frameSize.Width * frameSize.Height]; - for (var i = 0; i < frame.Size.Height; i++) - Buffer.BlockCopy(frame.Data, i * frame.Size.Width, - pngData, (i + offset.Y) * frameSize.Width + offset.X, - frame.Size.Width); + for (var h = 0; h < height; h++) + Array.Copy( + frame.Data, h * frame.Size.Width, + pngData, (h + offset.Y) * frameSize.Width + offset.X, + width); } var png = new Png(pngData, SpriteFrameType.Indexed8, frameSize.Width, frameSize.Height, palColors);