I simply had to change in the return value of CreateRotationQuaternionFromAxisAngle from
return new Quanternion(cosHalfAngle, -axis.X * sinHalfAngle, -axis.Y * sinHalfAngle, -axis.Z * sinHalfAngle);
to
return new Quanternion(cosHalfAngle, axis.X * sinHalfAngle, axis.Y * sinHalfAngle, axis.Z * sinHalfAngle);