diff --git a/Cairo/Perspex.Cairo/Media/DrawingContext.cs b/Cairo/Perspex.Cairo/Media/DrawingContext.cs index 47fc45048b..e3929f1e69 100644 --- a/Cairo/Perspex.Cairo/Media/DrawingContext.cs +++ b/Cairo/Perspex.Cairo/Media/DrawingContext.cs @@ -214,11 +214,10 @@ namespace Perspex.Cairo.Media /// A disposable used to undo the clip rectangle. public IDisposable PushClip(Rect clip) { - this.context.Save(); this.context.Rectangle(clip.ToCairo()); this.context.Clip(); - return Disposable.Create(() => this.context.Restore()); + return Disposable.Create(() => this.context.ResetClip()); } /// @@ -228,14 +227,11 @@ namespace Perspex.Cairo.Media /// A disposable used to undo the transformation. public IDisposable PushTransform(Matrix matrix) { - this.context.Save(); this.context.Transform(matrix.ToCairo()); - this.CurrentTransform *= matrix; - return Disposable.Create(() => + return Disposable.Create(() => { - this.context.Restore(); - this.CurrentTransform *= matrix.Invert(); + this.context.Transform(matrix.Invert().ToCairo()); }); }