I think if you want to use a quaternion for a rotation you need to normalise it first, else it doesnt just represents a rotation around an arbitrary axis but a uniform scale as well. but be aware that normalising on every frame is an expensive thing to do thanks to the square root.