From a quick look, it seems like you are feeding cairo with invalid information:
flake->Fluff.gradient_image_background =
cairo_xlib_surface_create(flake->dpy,
flake->DB.b, DefaultVisual(flake->dpy, 0),
flake->XGWA.width, flake->XGWA.height);
This claims that the drawable DB.p
uses the display's first screen's default visual. However, the actual window seems to be an argument to fuzzyflakes_init() and thus could be using another visual.
From another quick look, please try replacing DefaultVisual(flake->dpy, 0)
with flake->XGWA.visual
.