Ok, I am so, so close. I was doing the rotation matrices wrong, basically I needed two matrices, one about the horizon x-axis, then one about the y-axis rather than multiplying the two matrices together which had the effect of rotating the second axis about the first. Anyways, now I have two...