The original post was almost 7 years ago. However, other people might still need a solution. I wrote a demo program recently, full with comments on how all this complex stuff works:
https://github.com/Blunk-electronic/ada_training/tree/master/src/gtk/canvas