(although I'm not sure whether the "surface"
variable leaks? The docs don't mention):
cairo_surface_t* surface = gdk_cairo_surface_create_from_pixbuf(
pixbuf->gobj(), get_scale_factor(), get_window()->gobj());
g_object_set(G_OBJECT(cell_renderer_pixbuf.gobj()), "surface", surface, NULL);