code: function () {
              // do nothing if there is no saved states
              if (this._matrixStack.length !== 0) {
                  var color = this._colorStack.pop();
                  var matrix = this._matrixStack.pop();
  
                  // restore the previous context
                  this.currentColor.copy(color);
                  this.currentTransform.copy(matrix);
  
                  // recycle objects
                  me.pool.push(color);
                  me.pool.push(matrix);
              }
  
              if (this._scissorStack.length !== 0) {
                  // FIXME : prevent `scissor` object realloc and GC
                  this.currentScissor.set(this._scissorStack.pop());
              } else {
                  // turn off scissor test
                  this.gl.disable(this.gl.SCISSOR_TEST);
                  this.currentScissor[0] = 0;
                  this.currentScissor[1] = 0;
                  this.currentScissor[2] = this.backBufferCanvas.width;
                  this.currentScissor[3] = this.backBufferCanvas.height;
              }
          }
docs: restores the canvas context
  @name restore
  @memberOf me.WebGLRenderer.prototype
  @function