I have solved a floating point round off error by dividing instead of multiplying. When calculating the unit vector I was multiplying a (non-unit) vector by 1 over it's length. I was doing this because I had a multiplication method available. It seems that the use of two floating point operations (instead of just the one) lead to rounding errors creeping into my calculations.
Weird