The "disappearing" geometry is caused by a limitation of CanvasRenderer
due to the way it handles depth-sorting.
While WebGLRenderer sorts at the pixel level, CanvasRenderer sorts at the polygon level.
The best you can do is to increase the tessellation of your geometry, which you are already doing.
var geometry = new THREE.PlaneGeometry(width, height, 10, 10 );
Also, adding more points to your lines will help.
As far as the distortion goes, that is also improved by increased tessellation. See ThreeJS Cube texture strange visual.
three.js r.64