Haha, that sounds like a fun issue to debug. It doesn't look like a rendering issue, but I'm not sure. It works fine in Chrome, though.
Yep, was using a vec4 for color in the C++ code and was using a vec3 in the shader code.
Oh and I was changing the element buffer object data without a VAO bound. https://www.khronos.org/opengl/wiki/Vertex_Specification says you should not, though it still seems to work just fine everywhere I could test.