diff --git a/package.json b/package.json index a84b02157d0..6379a89d3b4 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "gl-line3d": "^1.1.0", "gl-mat4": "^1.1.2", "gl-mesh3d": "^1.3.0", - "gl-plot2d": "^1.2.0", + "gl-plot2d": "^1.3.0", "gl-plot3d": "^1.5.4", "gl-pointcloud2d": "^1.0.0", "gl-scatter2d": "^1.3.2", diff --git a/src/plots/gl2d/convert.js b/src/plots/gl2d/convert.js index 9f6c2aadd6e..5f4f1fcfd15 100644 --- a/src/plots/gl2d/convert.js +++ b/src/plots/gl2d/convert.js @@ -86,7 +86,7 @@ function Axes2DOptions(scene) { [0, 0, 0, 1] ]; - this.borderColor = [0, 0, 0, 0]; + this.borderColor = false; this.backgroundColor = [0, 0, 0, 0]; this.static = this.scene.staticPlot; diff --git a/src/plots/gl2d/scene2d.js b/src/plots/gl2d/scene2d.js index 29cb036291e..26fd39b9146 100644 --- a/src/plots/gl2d/scene2d.js +++ b/src/plots/gl2d/scene2d.js @@ -118,6 +118,7 @@ proto.makeFramework = function() { var gl = getContext({ canvas: liveCanvas, + preserveDrawingBuffer: true, premultipliedAlpha: true }); @@ -181,20 +182,24 @@ proto.toImage = function(format) { if(!format) format = 'png'; this.stopped = true; + if(this.staticPlot) this.container.appendChild(STATIC_CANVAS); // update canvas size this.updateSize(this.canvas); - // force redraw - this.glplot.setDirty(); - this.glplot.draw(); // grab context and yank out pixels var gl = this.glplot.gl, w = gl.drawingBufferWidth, h = gl.drawingBufferHeight; + // force redraw + gl.clearColor(1, 1, 1, 0); + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + this.glplot.setDirty(); + this.glplot.draw(); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); var pixels = new Uint8Array(w * h * 4); diff --git a/src/traces/scattergl/select.js b/src/traces/scattergl/select.js index 4c4d7fb2afd..c2b425bba81 100644 --- a/src/traces/scattergl/select.js +++ b/src/traces/scattergl/select.js @@ -23,6 +23,9 @@ module.exports = function selectPoints(searchInfo, polygon) { y; var glTrace = cd[0]._glTrace; + + if(!glTrace) return; + var scene = glTrace.scene; var hasOnlyLines = (!subtypes.hasMarkers(trace) && !subtypes.hasText(trace));