protected void GenerateMask() { if (MaskMap != null) { MaskMap.Dispose(); } using (var maskImage = new ImageSurface(Format.Argb32, Image.Width, Image.Height)) { using (var cr = new Context(maskImage)) { cr.SetSourceRGB(0, 0, 0); cr.Operator = Operator.Clear; cr.Paint(); cr.Operator = Operator.Source; cr.SetSource(Image, 0, 0); cr.Rectangle(new Cairo.Rectangle(0, 0, Image.Width, Image.Height)); cr.Paint(); } MaskMap = Gdk.CairoHelper.RegionCreateFromSurface(maskImage); } }