You cant rotate vector by simple quaternion multiplication. To get proper results you have to use the following formula:

v' = qvq<sup>-1</sup>

where q is quaternion containig rotation, v is a vector to be rotated represented as a quaternion with zero real (scalar) part, and q<sup>-1</sup> is the inverse of q. If q is normalised then its inverse is equal to conjugate of q.

This is my function for rotating vectors using quaternions.
Code:
function quatRotateVector&#40;v &#58; TVector; q &#58; TQuatermion&#41; &#58; TVector;
var
 q_1,qv,qt &#58; TQuatermion;
begin
 q &#58;= quatNormalize&#40;q&#41;;
 q_1 &#58;= quatConjugate&#40;q&#41;; 
 qv &#58;= Quatermion&#40;v,0.0&#41;;
 qt &#58;= quatMul&#40;q,qv&#41;;
 qt &#58;= quatMul&#40;qt,q_1&#41;;
 Result.x &#58;= qt.x;
 Result.y &#58;= qt.y;
 Result.z &#58;= qt.z;
end;
I hope it helps you.

P. S. My code is not tested since I don't use quatrnion based camera.