diff --git a/src/plot_api/helpers.js b/src/plot_api/helpers.js
index 39913c7ac45..bfbfc28c414 100644
--- a/src/plot_api/helpers.js
+++ b/src/plot_api/helpers.js
@@ -318,11 +318,11 @@ exports.cleanData = function(data) {
         }
 
         // scl->scale, reversescl->reversescale
-        if('scl' in trace) {
+        if('scl' in trace && !('colorscale' in trace)) {
             trace.colorscale = trace.scl;
             delete trace.scl;
         }
-        if('reversescl' in trace) {
+        if('reversescl' in trace && !('reversescale' in trace)) {
             trace.reversescale = trace.reversescl;
             delete trace.reversescl;
         }
diff --git a/test/jasmine/tests/plot_api_test.js b/test/jasmine/tests/plot_api_test.js
index 3475b06227d..837f1569f2d 100644
--- a/test/jasmine/tests/plot_api_test.js
+++ b/test/jasmine/tests/plot_api_test.js
@@ -2254,6 +2254,52 @@ describe('Test plot api', function() {
 
         afterEach(destroyGraphDiv);
 
+        it('should rename \'scl\' to \'colorscale\' when colorscale is not defined', function() {
+            var data = [{
+                type: 'heatmap',
+                scl: 'Blues'
+            }];
+
+            Plotly.plot(gd, data);
+            expect(gd.data[0].colorscale).toBe('Blues');
+            expect(gd.data[0].scl).toBe(undefined);
+        });
+
+        it('should not delete rename \'scl\' to \'colorscale\' when colorscale is defined ', function() {
+            var data = [{
+                type: 'heatmap',
+                colorscale: 'Greens',
+                scl: 'Reds'
+            }];
+
+            Plotly.plot(gd, data);
+            expect(gd.data[0].colorscale).toBe('Greens');
+            expect(gd.data[0].scl).not.toBe(undefined);
+        });
+
+        it('should rename \'reversescl\' to \'reversescale\' when colorscale is not defined', function() {
+            var data = [{
+                type: 'heatmap',
+                reversescl: true
+            }];
+
+            Plotly.plot(gd, data);
+            expect(gd.data[0].reversescale).toBe(true);
+            expect(gd.data[0].reversescl).toBe(undefined);
+        });
+
+        it('should not delete & rename \'reversescl\' to \'reversescale\' when colorscale is defined', function() {
+            var data = [{
+                type: 'heatmap',
+                reversescale: true,
+                reversescl: false
+            }];
+
+            Plotly.plot(gd, data);
+            expect(gd.data[0].reversescale).toBe(true);
+            expect(gd.data[0].reversescl).not.toBe(undefined);
+        });
+
         it('should rename \'YIGnBu\' colorscales YlGnBu (2dMap case)', function() {
             var data = [{
                 type: 'heatmap',