allora... questo è il mio handler per expose-event di un bottone:

codice:
static gboolean on_button_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
	cairo_t *cr;
	cr = gdk_cairo_create(widget->window);
	cairo_set_source_surface(cr, background_image, 0, 0);
	cairo_paint(cr);
	cairo_destroy(cr);
	return FALSE;
}
solo che quando eseguo vedo il bottone pulito pulito senza niente diseganto sopra... se la stessa cosa la faccio su una finstra funziona tutto...