The "multiply" calls in your sample code look suspiciously like they are actually permanently changing the values in the vertices and accumulating those changes across frames over time. Is this true?
–
Josh Petrie♦Oct 15 '12 at 23:02

Shouldn't you be using 4x4 matrices instead of 3x3?
–
Gustavo MacielOct 15 '12 at 23:03