note to self
As far as cairo is concerned, its backend buffer get/set methods are only required to store and retrieve pixel data in the format requested by the cairo core. It does not have to do fancy conversions. It does not have to do alpha stuff. Presumably you’d want it be convertible to the host graphics system, but cairo itself doesn’t care about that.