Change clipping implementation.

I noticed that some shapes weren't clipped properly so I changed the
implementation to be more like the canonical Cairo backend. Now those
shapes seem to work. I can add a test if there's interest.