Try removing this line:
moveDirection = transform.TransformDirection(moveDirection);
And see what happens. (If 'moveDirection' is already in world space, there shouldn't be any need to transform it. I don't see anything in your code that specifies what space moveDirection is in, but I'm guessing it's world space.)