When writing a GBindingTransformFunc for a bi-directional binding in the reverse direction, the "source" and "target" properties of the GBinding are flip-flopped wrt the transform function. That always throws me. Just pass the ESource to the tranform function to avoid this confusion.