protected override Bitmap GetThumbnailImage(uint width) { using (var thumb = loader.GetThumbnail(SelectedItemStream)) { int newWidth, newHeight; if (thumb.Width > thumb.Height) { if (width > thumb.Width) { newWidth = thumb.Width; newHeight = thumb.Height; } else { newWidth = (int)width; newHeight = (int)(thumb.Height * (float)width / thumb.Width); } } else { if (width > thumb.Height) { newWidth = thumb.Width; newHeight = thumb.Height; } else { newWidth = (int)(thumb.Width * (float)width / thumb.Height); newHeight = (int)width; } } var result = new Bitmap(newWidth, newHeight); using (var g = Graphics.FromImage(result)) { g.DrawImage(thumb, 0, 0, result.Width, result.Height); } return(result); } }