I noticed that quite a few of the memory leaks were do to making a texture from a CairoGraphics object. Instead of having to remember at all the call sites, I've created a couple of helper methods.
I had to control myself a lot during this change to not change too many other things at once. Sometimes I couldn't help myself though.
In particular I changed the TextureContainer to use smart pointers.