public void DrawImage(IImage image, Rect frame, double alpha = 1.0) { var ii = image as ImageImage; if (ii != null) { if (alpha < 0.999) { var i = new ImageAttributes(); var mat = new ColorMatrix(new float[][] { new[] { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f }, new[] { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f }, new[] { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f }, new[] { 0.0f, 0.0f, 0.0f, (float)alpha, 0.0f }, new[] { 0.0f, 0.0f, 0.0f, 0.0f, 1.0f } }); i.SetColorMatrix(mat); var size = ii.Image.Size; graphics.DrawImage(ii.Image, Conversions.GetRectangle(frame), 0, 0, size.Width, size.Height, GraphicsUnit.Pixel, i); } else { graphics.DrawImage(ii.Image, Conversions.GetRectangleF(frame)); } } }