diff --git a/Cairo/Perspex.Cairo/Media/DrawingContext.cs b/Cairo/Perspex.Cairo/Media/DrawingContext.cs index 1d6d2a146a..505b780a83 100644 --- a/Cairo/Perspex.Cairo/Media/DrawingContext.cs +++ b/Cairo/Perspex.Cairo/Media/DrawingContext.cs @@ -162,11 +162,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()); } /// @@ -176,14 +175,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()); }); }