I have had a similar problem with my raytracer. When checking for intersections, I used to compare the factor for the direction with zero to determine whether the object is in front of the view plane:
... t1 = object.intersect(ray); if(t1 > 0 && ...) ...
It fixed once I compared to a value near zero, e.g. 0.000001 instead. I can only assume that some sort of floating point operation inaccuracy is the reason for the artifacts.
yeah I also noticed in the tutorials that it doesn't check for hitting something, but rather is it close enough?