I think this is because of difference in how Monkey and ZenGL render sprites with Scale and Rotating Pivot. So, your code is right(except procedure Update without parameter dt : Double, which cause an Exception when exit the demo ), only ZenGL need a changes. But demo is interesting, so as soon as I get free time, I will try to figure out how it should works...