anchor.diff:    InputElement _elmLightDirectionX, _elmLightDirectionY, _elmLightDirectionZ;
     InputElement _elmDirectionalR, _elmDirectionalG, _elmDirectionalB;
   
  -  double _xRot = 0.0, _xSpeed = 0.0,
  -         _yRot = 0.0, _ySpeed = 0.0,
  -         _zPos = -5.0;
  +  double _xRot = 0.0,
  +      _xSpeed = 0.0,
  +      _yRot = 0.0,
  +      _ySpeed = 0.0,
  +      _zPos = -5.0;
   
     int _filter = 0;
     double _lastTime = 0.0;
  
positive.code:     _uSampler = _gl.getUniformLocation(_shaderProgram, "uSampler");
      _uUseLighting = _gl.getUniformLocation(_shaderProgram, "uUseLighting");
      _uAmbientColor = _gl.getUniformLocation(_shaderProgram, "uAmbientColor");
      _uLightDirection = _gl.getUniformLocation(_shaderProgram, "uLightDirection");
      _uDirectionalColor = _gl.getUniformLocation(_shaderProgram, "uDirectionalColor");
  
    }
  
    void _initBuffers() {
  
negative.code:     _gl.uniform1i(_uUseLighting, _elmLighting.checked ? 1 : 0); // must be int, not bool
  
      if (_elmLighting.checked) {
  
        _gl.uniform3f(_uAmbientColor, _elmAmbientR.valueAsNumber / 100, _elmAmbientG.valueAsNumber / 100, _elmAmbientB.valueAsNumber / 100);
  
        Vector3 lightingDirection = new Vector3(_elmLightDirectionX.valueAsNumber / 100, _elmLightDirectionY.valueAsNumber / 100, _elmLightDirectionZ.valueAsNumber / 100);
        Vector3 adjustedLD = lightingDirection.normalize();
        //adjustedLD.scale(-1.0);
        _gl.uniform3fv(_uLightingDirection, adjustedLD.storage);
        
        _gl.uniform3f(_uDirectionalColor, _elmDirectionalR.valueAsNumber / 100, _elmDirectionalG.valueAsNumber / 100, _elmDirectionalB.valueAsNumber / 100);
      }
  
      _gl.bindBuffer(webgl.RenderingContext.ELEMENT_ARRAY_BUFFER, _cubeVertexIndexBuffer);
  