Instead of creating a GdkX11Cursor, create GdkCursors. Cache the XCursor in a hash table instead. Also, make use of the new fallback mechanism for fallback code: Make sure to provide cursors for the names that are guaranteed to exist, but do not do bad attempts at displaying texture surfaces. Black/White/transparent is not a replacement for those.