The problem is that the Y axis in your vertex shader is not properly converted from screen coordinates (Y goes down) to WebGL clip space (Y goes up).