Make the cairo surface a member (don't create every draw()).
XCB support for Xft seems non-existent. Switch to Xlib :(