There's two ways I think we can go about it:
always set ParentRelative when
gdk_rgba_is_clear(), the visual supports no alpha and the depths match.
Have a new magic API
cairo_pattern_t *gdk_x11_display_get_parent_relative_pattern()that returns a cairo pattern per-display singleton that is used by the background setting code to force ParentRelative to be set.
I don't like either solution very much because they have interesting repercussions, but I think they solve the problem and they're both better than having a magic GdkWindow flag.
This is my attempt at 2.