I don't like this. Why can't Voxelcluster::rotateX just call WorldTransform::rotateX. Instead a Worldtransform object is created, given to transform, given to WorldObject::transform which does some transformation that isn't the same as the rotateX/Y/Z method would do because original and added quaternions are swapped. Creating a quaternion with glm::quat(rot,0,0) is also something else than rotating around the X axis which leads to a rotation method that does something completely different than the worldtransform rotations do :(