This can leak the shader program.  Use `replaceShaderProgram`.