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.
var geometry = new THREE.PlaneGeometry( width, height, 10, 10 );
three.js r.66