diff --git a/web/pgadmin/feature_tests/copy_selected_query_results_feature_test.py b/web/pgadmin/feature_tests/copy_selected_query_results_feature_test.py
index ac667001..fa784ee6 100644
--- a/web/pgadmin/feature_tests/copy_selected_query_results_feature_test.py
+++ b/web/pgadmin/feature_tests/copy_selected_query_results_feature_test.py
@@ -81,7 +81,7 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
 
     def _copies_row_using_keyboard_shortcut(self):
         pyperclip.copy("old clipboard contents")
-        self.page.find_by_xpath("//*[contains(@class, 'slick-row')]/*[1]/input[@type='checkbox']").click()
+        self.page.find_by_xpath("//*[contains(@class, 'slick-row')]/*[1]").click()
 
         ActionChains(self.page.driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
 
diff --git a/web/pgadmin/static/img/select-all-icon.png b/web/pgadmin/static/img/select-all-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..bdb8878975b8fde309cd6a586f5c826d6e81571e
GIT binary patch
diff --git a/web/pgadmin/static/js/selection/active_cell_capture.js b/web/pgadmin/static/js/selection/active_cell_capture.js
index fe8cbd81..5b8e8e2a 100644
--- a/web/pgadmin/static/js/selection/active_cell_capture.js
+++ b/web/pgadmin/static/js/selection/active_cell_capture.js
@@ -1,7 +1,7 @@
 define([
   'jquery',
   'sources/selection/range_selection_helper'
-], function ($, rangeSelectionHelper) {
+], function ($, RangeSelectionHelper) {
 
   var ActiveCellCapture = function () {
     var KEY_RIGHT = 39;
@@ -10,6 +10,8 @@ define([
     var KEY_DOWN = 40;
 
     var bypassDefaultActiveCellRangeChange = false;
+    var isColumnsResized = false;
+    var isMouseInHeader = false;
     var grid;
 
     var init = function (slickGrid) {
@@ -19,6 +21,9 @@ define([
       grid.onClick.subscribe(onClickHandler);
       grid.onActiveCellChanged.subscribe(onActiveCellChangedHandler);
       grid.onKeyDown.subscribe(onKeyDownHandler);
+      grid.onHeaderMouseEnter.subscribe(onHeaderMouseEnterHandler);
+      grid.onHeaderMouseLeave.subscribe(onHeaderMouseLeaveHandler);
+      grid.onColumnsResized.subscribe(onColumnsResizedHandler);
     };
 
     var destroy = function () {
@@ -26,6 +31,9 @@ define([
       grid.onHeaderClick.unsubscribe(onHeaderClickHandler);
       grid.onActiveCellChanged.unsubscribe(onActiveCellChangedHandler);
       grid.onKeyDown.unsubscribe(onKeyDownHandler);
+      grid.onHeaderMouseEnter.unsubscribe(onHeaderMouseEnterHandler);
+      grid.onHeaderMouseLeave.unsubscribe(onHeaderMouseLeaveHandler);
+      grid.onColumnsResized.unsubscribe(onColumnsResizedHandler);
     };
 
     $.extend(this, {
@@ -39,6 +47,12 @@ define([
     }
 
     function onHeaderClickHandler(event, args) {
+      if (isColumnsResizedAndCurrentlyInHeader()) {
+        isColumnsResized = false;
+        event.stopPropagation();
+        return;
+      }
+
       bypassDefaultActiveCellRangeChange = true;
 
       var clickedColumn = args.column.pos + 1;
@@ -53,6 +67,19 @@ define([
       }
     }
 
+    function onHeaderMouseLeaveHandler() {
+      isMouseInHeader = false;
+    }
+
+    function onHeaderMouseEnterHandler() {
+      isMouseInHeader = true;
+      isColumnsResized = false;
+    }
+
+    function onColumnsResizedHandler() {
+      isColumnsResized = true;
+    }
+
     function onClickHandler(event, args) {
       if (isRowHeader(args.cell)) {
         bypassDefaultActiveCellRangeChange = true;
@@ -83,15 +110,19 @@ define([
       }
     }
 
+    function isColumnsResizedAndCurrentlyInHeader() {
+      return isMouseInHeader && isColumnsResized;
+    }
+
     function isClickingLastClickedHeader(clickedRow, clickedColumn) {
       return hasActiveCell() && grid.getActiveCell().row === clickedRow && grid.getActiveCell().cell === clickedColumn;
     }
 
     function isClickingInSelectedColumn(clickedColumn) {
-      var column = rangeSelectionHelper.rangeForColumn(grid, clickedColumn);
+      var column = RangeSelectionHelper.rangeForColumn(grid, clickedColumn);
       var cellSelectionModel = grid.getSelectionModel();
       var ranges = cellSelectionModel.getSelectedRanges();
-      return rangeSelectionHelper.isRangeSelected(ranges, column);
+      return RangeSelectionHelper.isRangeSelected(ranges, column);
     }
 
     function isRowHeader(cellClicked) {
@@ -99,10 +130,10 @@ define([
     }
 
     function isClickingInSelectedRow(rowClicked) {
-      var row = rangeSelectionHelper.rangeForRow(grid, rowClicked);
+      var row = RangeSelectionHelper.rangeForRow(grid, rowClicked);
       var cellSelectionModel = grid.getSelectionModel();
       var ranges = cellSelectionModel.getSelectedRanges();
-      return rangeSelectionHelper.isRangeSelected(ranges, row);
+      return RangeSelectionHelper.isRangeSelected(ranges, row);
     }
 
     function isSingleRangeSelected() {
diff --git a/web/pgadmin/static/js/selection/column_selector.js b/web/pgadmin/static/js/selection/column_selector.js
index b03c8cf3..8806b68c 100644
--- a/web/pgadmin/static/js/selection/column_selector.js
+++ b/web/pgadmin/static/js/selection/column_selector.js
@@ -1,4 +1,8 @@
-define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], function ($, rangeSelectionHelper) {
+define([
+  'jquery',
+  'sources/selection/range_selection_helper',
+  'slickgrid'
+], function ($, RangeSelectionHelper) {
   var ColumnSelector = function () {
     var Slick = window.Slick;
     var gridEventBus = new Slick.EventHandler();
@@ -16,11 +20,6 @@ define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], func
           }
           $columnHeader.toggleClass('selected');
 
-          if (!hasClickedOnCheckbox(event)) {
-            var $checkbox = $("[data-id='checkbox-" + columnDefinition.id + "']");
-            toggleCheckbox($checkbox);
-          }
-
           updateRanges(grid, columnDefinition.id);
         }
       });
@@ -29,14 +28,14 @@ define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], func
     };
 
     var handleSelectedRangesChanged = function (grid, event, ranges) {
-      $('[data-cell-type="column-header-row"] input:checked')
-        .each(function (index, checkbox) {
-          var $checkbox = $(checkbox);
-          var columnIndex = grid.getColumnIndex($checkbox.data('column-id'));
-          var isStillSelected = rangeSelectionHelper.isRangeSelected(ranges,
-            rangeSelectionHelper.rangeForColumn(grid, columnIndex));
+      $('.slick-header-column.selected')
+        .each(function (index, columnHeader) {
+          var $spanHeaderColumn = $(columnHeader).find('[data-cell-type="column-header-row"]');
+          var columnIndex = grid.getColumnIndex($spanHeaderColumn.data('column-id'));
+          var isStillSelected = RangeSelectionHelper.isRangeSelected(ranges,
+            RangeSelectionHelper.rangeForColumn(grid, columnIndex));
           if (!isStillSelected) {
-            toggleCheckbox($checkbox);
+            $(columnHeader).toggleClass('selected')
           }
         });
     };
@@ -47,13 +46,13 @@ define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], func
 
       var columnIndex = grid.getColumnIndex(columnId);
 
-      var columnRange = rangeSelectionHelper.rangeForColumn(grid, columnIndex);
+      var columnRange = RangeSelectionHelper.rangeForColumn(grid, columnIndex);
       var newRanges;
-      if (rangeSelectionHelper.isRangeSelected(ranges, columnRange)) {
-        newRanges = rangeSelectionHelper.removeRange(ranges, columnRange);
+      if (RangeSelectionHelper.isRangeSelected(ranges, columnRange)) {
+        newRanges = RangeSelectionHelper.removeRange(ranges, columnRange);
       } else {
-        if (rangeSelectionHelper.areAllRangesSingleColumns(ranges, grid)) {
-          newRanges = rangeSelectionHelper.addRange(ranges, columnRange);
+        if (RangeSelectionHelper.areAllRangesSingleColumns(ranges, grid)) {
+          newRanges = RangeSelectionHelper.addRange(ranges, columnRange);
         } else {
           newRanges = [columnRange];
         }
@@ -61,36 +60,21 @@ define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], func
       selectionModel.setSelectedRanges(newRanges);
     };
 
-    var hasClickedOnCheckbox = function (event) {
-      return event.target.type == "checkbox"
-    };
-
-
     var hasClickedChildOfColumnHeader = function (event) {
       return !$(event.target).hasClass("slick-header-column");
     };
 
-    var toggleCheckbox = function (checkbox) {
-      if (checkbox.prop("checked")) {
-        checkbox.prop("checked", false)
-      } else {
-        checkbox.prop("checked", true)
-      }
-    };
-
     var isColumnSelectable = function (columnDefinition) {
       return columnDefinition.selectable !== false;
     };
 
-    var getColumnDefinitionsWithCheckboxes = function (columnDefinitions) {
+    var getColumnDefinitions = function (columnDefinitions) {
       return _.map(columnDefinitions, function (columnDefinition) {
         if (isColumnSelectable(columnDefinition)) {
           var name =
             "<span data-cell-type='column-header-row' " +
-            "       data-test='output-column-header'>" +
-            "  <input data-id='checkbox-" + columnDefinition.id + "' " +
-            "         data-column-id='" + columnDefinition.id + "' " +
-            "         type='checkbox'/>" +
+            "       data-test='output-column-header'" +
+            "       data-column-id='" + columnDefinition.id + "'>" +
             "  <span class='column-description'>" + columnDefinition.name + "</span>" +
             "</span>";
           return _.extend(columnDefinition, {
@@ -104,7 +88,7 @@ define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], func
 
     $.extend(this, {
       "init": init,
-      "getColumnDefinitionsWithCheckboxes": getColumnDefinitionsWithCheckboxes
+      "getColumnDefinitions": getColumnDefinitions
     });
   };
   return ColumnSelector;
diff --git a/web/pgadmin/static/js/selection/grid_selector.js b/web/pgadmin/static/js/selection/grid_selector.js
index 90eeacf8..ae4ab96d 100644
--- a/web/pgadmin/static/js/selection/grid_selector.js
+++ b/web/pgadmin/static/js/selection/grid_selector.js
@@ -23,18 +23,26 @@ define(['jquery',
         grid.registerPlugin(columnSelector);
       };
 
-      var getColumnDefinitionsWithCheckboxes = function (columnDefinitions) {
-        columnDefinitions = columnSelector.getColumnDefinitionsWithCheckboxes(columnDefinitions);
-        columnDefinitions = rowSelector.getColumnDefinitionsWithCheckboxes(columnDefinitions);
+      var getColumnDefinitions = function (columnDefinitions) {
+        columnDefinitions = columnSelector.getColumnDefinitions(columnDefinitions);
+        columnDefinitions = rowSelector.getColumnDefinitions(columnDefinitions);
 
         columnDefinitions[0].selectAllOnClick = true;
-        columnDefinitions[0].name = '<input type="checkbox" data-id="checkbox-select-all" ' +
-          'title="Select/Deselect All"/>' + columnDefinitions[0].name;
+        columnDefinitions[0].name = '<span data-id="select-all" ' +
+          'title="Select/Deselect All">' +
+          '<br>' +
+          columnDefinitions[0].name +
+          '<img class="select-all-icon" src="/static/img/select-all-icon.png">' +
+        '</span>';
         return columnDefinitions;
       };
 
       function handleSelectedRangesChanged(grid) {
-        $("[data-id='checkbox-select-all']").prop("checked", RangeSelectionHelper.isEntireGridSelected(grid));
+        if(RangeSelectionHelper.isEntireGridSelected(grid)) {
+          $("[data-id='select-all']").addClass("selected");
+        } else {
+          $("[data-id='select-all']").removeClass("selected");
+        }
       }
 
       function toggleSelectAll(grid) {
@@ -52,7 +60,7 @@ define(['jquery',
 
       $.extend(this, {
         "init": init,
-        "getColumnDefinitionsWithCheckboxes": getColumnDefinitionsWithCheckboxes
+        "getColumnDefinitions": getColumnDefinitions
       });
     };
 
diff --git a/web/pgadmin/static/js/selection/row_selector.js b/web/pgadmin/static/js/selection/row_selector.js
index 9e539353..1088f879 100644
--- a/web/pgadmin/static/js/selection/row_selector.js
+++ b/web/pgadmin/static/js/selection/row_selector.js
@@ -1,4 +1,4 @@
-define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], function ($, rangeSelectionHelper) {
+define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], function ($, RangeSelectionHelper) {
   var RowSelector = function () {
     var Slick = window.Slick;
 
@@ -13,23 +13,25 @@ define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], func
 
     var handleClick = function (grid, event, args) {
       if (grid.getColumns()[args.cell].id === 'row-header-column') {
-        if (event.target.type != "checkbox") {
-          var checkbox = $(event.target).find('input[type="checkbox"]');
-          toggleCheckbox($(checkbox));
+        var $rowHeaderSpan = $(event.target);
+
+        if($rowHeaderSpan.data('cell-type') != "row-header-selector") {
+          $rowHeaderSpan = $(event.target).find('[data-cell-type="row-header-selector"]');
         }
+        $rowHeaderSpan.toggleClass('selected');
         updateRanges(grid, args.row);
       }
     };
 
     var handleSelectedRangesChanged = function (grid, event, ranges) {
-      $('[data-cell-type="row-header-checkbox"]:checked')
-        .each(function (index, checkbox) {
-          var $checkbox = $(checkbox);
-          var row = parseInt($checkbox.data('row'));
-          var isStillSelected = rangeSelectionHelper.isRangeSelected(ranges,
-            rangeSelectionHelper.rangeForRow(grid, row));
+      $('[data-cell-type="row-header-selector"].selected')
+        .each(function (index, rowHeaderSpan) {
+          var $rowHeaderSpan = $(rowHeaderSpan);
+          var row = parseInt($rowHeaderSpan.data('row'));
+          var isStillSelected = RangeSelectionHelper.isRangeSelected(ranges,
+            RangeSelectionHelper.rangeForRow(grid, row));
           if (!isStillSelected) {
-            toggleCheckbox($checkbox);
+            $rowHeaderSpan.toggleClass('selected');
           }
         });
     };
@@ -38,47 +40,40 @@ define(['jquery', 'sources/selection/range_selection_helper', 'slickgrid'], func
       var selectionModel = grid.getSelectionModel();
       var ranges = selectionModel.getSelectedRanges();
 
-      var rowRange = rangeSelectionHelper.rangeForRow(grid, rowId);
+      var rowRange = RangeSelectionHelper.rangeForRow(grid, rowId);
 
       var newRanges;
-      if (rangeSelectionHelper.isRangeSelected(ranges, rowRange)) {
-        newRanges = rangeSelectionHelper.removeRange(ranges, rowRange);
+      if (RangeSelectionHelper.isRangeSelected(ranges, rowRange)) {
+        newRanges = RangeSelectionHelper.removeRange(ranges, rowRange);
       } else {
-        if (rangeSelectionHelper.areAllRangesSingleRows(ranges, grid)) {
-          newRanges = rangeSelectionHelper.addRange(ranges, rowRange);
+        if (RangeSelectionHelper.areAllRangesSingleRows(ranges, grid)) {
+          newRanges = RangeSelectionHelper.addRange(ranges, rowRange);
         } else {
           newRanges = [rowRange];
         }
       }
       selectionModel.setSelectedRanges(newRanges);
-    }
-
-    var toggleCheckbox = function (checkbox) {
-      if (checkbox.prop("checked")) {
-        checkbox.prop("checked", false)
-      } else {
-        checkbox.prop("checked", true)
-      }
     };
 
-    var getColumnDefinitionsWithCheckboxes = function (columnDefinitions) {
+    var getColumnDefinitions = function (columnDefinitions) {
       columnDefinitions.unshift({
         id: 'row-header-column',
         name: '',
         selectable: false,
         focusable: false,
         formatter: function (rowIndex) {
-          return '<input type="checkbox" ' +
+          return '<span ' +
             'data-row="' + rowIndex + '" ' +
-            'data-cell-type="row-header-checkbox"/>'
-        }
+            'data-cell-type="row-header-selector"/>'
+        },
+        width: 30
       });
       return columnDefinitions;
     };
 
     $.extend(this, {
       "init": init,
-      "getColumnDefinitionsWithCheckboxes": getColumnDefinitionsWithCheckboxes
+      "getColumnDefinitions": getColumnDefinitions
     });
   };
 
diff --git a/web/pgadmin/tools/sqleditor/static/css/sqleditor.css b/web/pgadmin/tools/sqleditor/static/css/sqleditor.css
index f3fcbedf..7b83fd59 100644
--- a/web/pgadmin/tools/sqleditor/static/css/sqleditor.css
+++ b/web/pgadmin/tools/sqleditor/static/css/sqleditor.css
@@ -349,9 +349,9 @@ li {
 }
 
 #datagrid .slick-header .slick-header-column.ui-state-default {
-  color: #ffffff;
+  color: #222222;
   padding: 4px 0 4px 6px;
-  background-color: #2c76b4;
+  background-color: #E8E8E8;
   border-bottom: 1px solid black;
 }
 
@@ -443,7 +443,7 @@ input.editor-checkbox:focus {
 
 /* color the first column */
 .slick-row .slick-cell.l0.r0 {
-  background-color: #2c76b4;
+  background-color: #F3F3F3;
 }
 
 #datagrid div.slick-header.ui-state-default {
@@ -469,6 +469,6 @@ input.editor-checkbox:focus {
 }
 
 .select-all-icon {
-  margin-left: 12px;
+  margin-left: 9px;
   vertical-align: bottom;
 }
\ No newline at end of file
diff --git a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
index d142e2ee..63479e95 100644
--- a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
@@ -596,7 +596,7 @@ define(
         });
 
         var gridSelector = new GridSelector();
-        grid_columns = gridSelector.getColumnDefinitionsWithCheckboxes(grid_columns);
+        grid_columns = gridSelector.getColumnDefinitions(grid_columns);
 
         var grid_options = {
           editable: true,
diff --git a/web/regression/javascript/selection/active_cell_capture_spec.js b/web/regression/javascript/selection/active_cell_capture_spec.js
index aaf08344..c12f9554 100644
--- a/web/regression/javascript/selection/active_cell_capture_spec.js
+++ b/web/regression/javascript/selection/active_cell_capture_spec.js
@@ -13,7 +13,12 @@ define([
 ], function (ActiveCellCapture, RangeSelectionHelper) {
   describe('ActiveCellCapture', function () {
     var grid, activeCellPlugin, getSelectedRangesSpy, setSelectedRangesSpy;
-    var onHeaderClickFunction, onClickFunction;
+    var onHeaderClickFunction;
+    var onClickFunction;
+    var onColumnsResizedFunction;
+    var onHeaderMouseEnterFunction;
+    var onHeaderMouseLeaveFunction;
+
     beforeEach(function () {
       getSelectedRangesSpy = jasmine.createSpy('getSelectedRangesSpy');
       setSelectedRangesSpy = jasmine.createSpy('setSelectedRangesSpy');
@@ -38,6 +43,9 @@ define([
         onHeaderClick: jasmine.createSpy('onHeaderClick'),
         onClick: jasmine.createSpy('onClick'),
         onKeyDown: jasmine.createSpyObj('onKeyDown', ['subscribe']),
+        onColumnsResized: jasmine.createSpyObj('onColumnsResized', ['subscribe']),
+        onHeaderMouseEnter: jasmine.createSpyObj('onHeaderMouseEnter', ['subscribe']),
+        onHeaderMouseLeave: jasmine.createSpyObj('onHeaderMouseLeave', ['subscribe']),
 
         getDataLength: function () { return 10 },
 
@@ -47,13 +55,30 @@ define([
       };
       activeCellPlugin = new ActiveCellCapture();
 
-      grid.onHeaderClick.subscribe = jasmine.createSpy('subscribe').and.callFake(function (callback) {
-        onHeaderClickFunction = callback.bind(activeCellPlugin);
-      });
+      grid.onHeaderClick.subscribe =
+        jasmine.createSpy('subscribe').and.callFake(function (callback) {
+          onHeaderClickFunction = callback.bind(activeCellPlugin);
+        });
 
-      grid.onClick.subscribe = jasmine.createSpy('subscribe').and.callFake(function (callback) {
-        onClickFunction = callback.bind(activeCellPlugin);
-      });
+      grid.onClick.subscribe =
+        jasmine.createSpy('subscribe').and.callFake(function (callback) {
+          onClickFunction = callback.bind(activeCellPlugin);
+        });
+
+      grid.onColumnsResized.subscribe =
+        jasmine.createSpy('subscribe').and.callFake(function (callback) {
+          onColumnsResizedFunction = callback.bind(activeCellPlugin);
+        });
+
+      grid.onHeaderMouseEnter.subscribe =
+        jasmine.createSpy('subscribe').and.callFake(function (callback) {
+          onHeaderMouseEnterFunction = callback.bind(activeCellPlugin);
+        });
+
+      grid.onHeaderMouseLeave.subscribe =
+        jasmine.createSpy('subscribe').and.callFake(function (callback) {
+          onHeaderMouseLeaveFunction = callback.bind(activeCellPlugin);
+        });
 
       activeCellPlugin.init(grid);
     });
@@ -93,13 +118,91 @@ define([
 
         describe('when the same column is clicked', function () {
           beforeEach(function () {
-            onHeaderClickFunction({}, {column: {pos: 1}})
+            onHeaderClickFunction({}, {column: {pos: 1}});
           });
 
           it('should reset the active cell', function () {
             expect(grid.resetActiveCell).toHaveBeenCalled();
           });
         });
+
+        describe('when mouse is inside the header row', function () {
+          beforeEach(function () {
+            onHeaderMouseEnterFunction({}, {});
+          });
+
+          describe('when user finishes resizing the selected column', function () {
+            var eventSpy;
+
+            beforeEach(function () {
+              eventSpy = jasmine.createSpyObj('event', ['stopPropagation']);
+              onColumnsResizedFunction({}, {grid: grid});
+              onHeaderClickFunction(eventSpy, {column: {pos: 1}});
+            });
+
+            it('should not deselect the current selected column', function () {
+              expect(grid.setActiveCell).not.toHaveBeenCalled();
+              expect(grid.resetActiveCell).not.toHaveBeenCalled();
+            });
+
+            it('should prevent further event propagation', function () {
+              expect(eventSpy.stopPropagation).toHaveBeenCalled();
+            });
+
+            describe('when the user clicks the resized column header', function () {
+              beforeEach(function () {
+                eventSpy.stopPropagation.calls.reset();
+                onHeaderClickFunction(eventSpy, {column: {pos: 2}});
+              });
+
+              it('should change the active cell', function () {
+                expect(grid.setActiveCell).toHaveBeenCalledWith(0, 3);
+                expect(grid.resetActiveCell).not.toHaveBeenCalled();
+              });
+
+              it('should allow further event propagation', function () {
+                expect(eventSpy.stopPropagation).not.toHaveBeenCalled();
+              });
+            });
+          });
+        });
+
+        describe('when mouse is outside the header row', function () {
+          beforeEach(function () {
+            onHeaderMouseEnterFunction({}, {});
+            onHeaderMouseLeaveFunction({}, {});
+          });
+
+          describe('when user finishes resizing the selected column', function () {
+            beforeEach(function () {
+              onColumnsResizedFunction({}, {grid: grid});
+            });
+
+            it('should not deselect the current selected column', function () {
+              expect(grid.setActiveCell).not.toHaveBeenCalled();
+              expect(grid.resetActiveCell).not.toHaveBeenCalled();
+            });
+
+            describe('when the user clicks another column header', function () {
+              var eventSpy;
+
+              beforeEach(function () {
+                eventSpy = jasmine.createSpyObj('event', ['stopPropagation']);
+                onHeaderMouseEnterFunction({}, {});
+                onHeaderClickFunction(eventSpy, {column: {pos: 3}});
+              });
+
+              it('should change the active cell', function () {
+                expect(grid.setActiveCell).toHaveBeenCalledWith(0, 4);
+                expect(grid.resetActiveCell).not.toHaveBeenCalled();
+              });
+
+              it('should allow further event propagation', function () {
+                expect(eventSpy.stopPropagation).not.toHaveBeenCalled();
+              });
+            });
+          });
+        });
       });
 
       describe('when three non-consecutive columns are selected', function () {
diff --git a/web/regression/javascript/selection/column_selector_spec.js b/web/regression/javascript/selection/column_selector_spec.js
index 2b0c645f..7e6f2a5f 100644
--- a/web/regression/javascript/selection/column_selector_spec.js
+++ b/web/regression/javascript/selection/column_selector_spec.js
@@ -62,26 +62,6 @@ define(
         ];
       });
 
-      describe("when a column is not selectable", function () {
-        it("does not create a checkbox for selecting the column", function () {
-          var checkboxColumn = {
-            name: 'some-column-name-4',
-            selectable: false
-          };
-          columns.push(checkboxColumn);
-
-          setupGrid(columns);
-
-          expect(container.find('.slick-header-columns input').length).toBe(3)
-        });
-      });
-
-      it("renders a checkbox in the column header", function () {
-        setupGrid(columns);
-
-        expect(container.find('.slick-header-columns input').length).toBe(3)
-      });
-
       it("displays the name of the column", function () {
         setupGrid(columns);
 
@@ -93,7 +73,7 @@ define(
 
       it("preserves the other attributes of column definitions", function () {
         var columnSelector = new ColumnSelector();
-        var selectableColumns = columnSelector.getColumnDefinitionsWithCheckboxes(columns);
+        var selectableColumns = columnSelector.getColumnDefinitions(columns);
 
         expect(selectableColumns[1].id).toBe('1');
       });
@@ -102,7 +82,7 @@ define(
         var grid, cellSelectionModel;
         beforeEach(function () {
           var columnSelector = new ColumnSelector();
-          columns = columnSelector.getColumnDefinitionsWithCheckboxes(columns);
+          columns = columnSelector.getColumnDefinitions(columns);
           data = [];
           for (var i = 0; i < 10; i++) {
             data.push({
@@ -134,7 +114,7 @@ define(
             expectOnlyTheFirstColumnToBeSelected(selectedRanges);
           });
 
-          xit("toggles a selected class to the header cell", function () {
+          it("toggles a selected class to the header cell", function () {
             container.find('.slick-header-column:contains(second column)').click();
             expect($(container.find('.slick-header-column:contains(second column)')).hasClass('selected'))
               .toBe(true);
@@ -217,7 +197,7 @@ define(
             expectOnlyTheFirstColumnToBeSelected(selectedRanges);
           });
 
-          xit("toggles a selected class to the header cell", function () {
+          it("toggles a selected class to the header cell", function () {
             container.find('.slick-header-column span.column-description:contains(second column)').click();
             expect($(container.find('.slick-header-column:contains(second column)')).hasClass('selected'))
               .toBe(true);
@@ -225,8 +205,8 @@ define(
             container.find('.slick-header-column span.column-description:contains(second column)').click();
             expect($(container.find('.slick-header-column:contains(second column)')).hasClass('selected'))
               .toBe(false);
-
           });
+        });
 
         describe("when a row is selected", function () {
           beforeEach(function () {
@@ -234,81 +214,74 @@ define(
             cellSelectionModel.setSelectedRanges(selectedRanges);
           });
 
-            it("deselects the row", function () {
-              container.find('.slick-header-column')[1].click();
-              var selectedRanges = cellSelectionModel.getSelectedRanges();
+          it("deselects the row", function () {
+            container.find('.slick-header-column')[1].click();
+            var selectedRanges = cellSelectionModel.getSelectedRanges();
+
+            expect(selectedRanges.length).toBe(1);
 
-              expect(selectedRanges.length).toBe(1);
+            var column = selectedRanges[0];
 
-              var column = selectedRanges[0];
+            expect(column.fromCell).toBe(1);
+            expect(column.toCell).toBe(1);
+            expect(column.fromRow).toBe(0);
+            expect(column.toRow).toBe(9);
+          })
+        });
 
-              expect(column.fromCell).toBe(1);
-              expect(column.toCell).toBe(1);
-              expect(column.fromRow).toBe(0);
-              expect(column.toRow).toBe(9);
-            })
+        describe("clicking a second time", function () {
+          beforeEach(function () {
+            container.find('.slick-header-column')[1].click();
           });
 
-          describe("clicking a second time", function () {
-            beforeEach(function () {
-              container.find('.slick-header-column')[1].click();
-            });
+          it("deselects the column", function () {
+            container.find('.slick-header-column')[1].click();
+            var selectedRanges = cellSelectionModel.getSelectedRanges();
 
-            it("unchecks checkbox", function () {
-              container.find('.slick-header-column')[1].click();
-              expect($(container.find('.slick-header-columns input')[1]).is(':checked')).toBeFalsy();
-            });
+            expect(selectedRanges.length).toEqual(0);
+          })
+        });
 
-            it("deselects the column", function () {
-              container.find('.slick-header-column')[1].click();
-              var selectedRanges = cellSelectionModel.getSelectedRanges();
+        describe("when the column is not selectable", function () {
+          it("does not select the column", function () {
+            $(container.find('.slick-header-column:contains(some-non-selectable-column)')).click();
+            var selectedRanges = cellSelectionModel.getSelectedRanges();
 
-              expect(selectedRanges.length).toEqual(0);
-            })
+            expect(selectedRanges.length).toEqual(0);
           });
+        });
 
-          describe("when the column is not selectable", function () {
-            it("does not select the column", function () {
-              $(container.find('.slick-header-column:contains(some-non-selectable-column)')).click();
-              var selectedRanges = cellSelectionModel.getSelectedRanges();
-
-              expect(selectedRanges.length).toEqual(0);
-            });
+        describe("when the column is deselected through setSelectedRanges", function () {
+          beforeEach(function () {
+            container.find('.slick-header-column')[1].click();
           });
 
-          describe("when the column is deselected through setSelectedRanges", function () {
-            beforeEach(function () {
-              container.find('.slick-header-column')[1].click();
-            });
-
-            xit("removes selected class from header", function () {
-              cellSelectionModel.setSelectedRanges([]);
+          it("removes selected class from header", function () {
+            cellSelectionModel.setSelectedRanges([]);
 
-              expect($(container.find('.slick-header-column')[1]).hasClass('selected'))
-                .toBe(false);
-
-            });
+            expect($(container.find('.slick-header-column')[1]).hasClass('selected'))
+              .toBe(false);
           });
+        });
 
-          describe("when a non-column range was already selected", function () {
-            beforeEach(function () {
-              var selectedRanges = [new Slick.Range(0, 0, 1, 0)];
-              cellSelectionModel.setSelectedRanges(selectedRanges);
-            });
+        describe("when a non-column range was already selected", function () {
+          beforeEach(function () {
+            var selectedRanges = [new Slick.Range(0, 0, 1, 0)];
+            cellSelectionModel.setSelectedRanges(selectedRanges);
+          });
 
-            it("deselects the non-column range", function () {
-              container.find('.slick-header-column:contains(some-column-name)').click();
+          it("deselects the non-column range", function () {
+            container.find('.slick-header-column:contains(some-column-name)').click();
 
-              var selectedRanges = cellSelectionModel.getSelectedRanges();
-              expectOnlyTheFirstColumnToBeSelected(selectedRanges);
-            })
-          });
+            var selectedRanges = cellSelectionModel.getSelectedRanges();
+            expectOnlyTheFirstColumnToBeSelected(selectedRanges);
+          })
         });
-
       });
+
       function setupGrid(columns) {
         var columnSelector = new ColumnSelector();
-        columns = columnSelector.getColumnDefinitionsWithCheckboxes(columns);
+        columns = columnSelector.getColumnDefinitions(columns);
         var grid = new SlickGrid(container, data, columns, options);
 
         var cellSelectionModel = new Slick.CellSelectionModel();
@@ -337,6 +310,5 @@ define(
 
         $(container.find('.grid-canvas')).trigger(pressEvent);
       }
-
     });
-  });
+  });
\ No newline at end of file
diff --git a/web/regression/javascript/selection/grid_selector_spec.js b/web/regression/javascript/selection/grid_selector_spec.js
index 05d1208d..5ea63692 100644
--- a/web/regression/javascript/selection/grid_selector_spec.js
+++ b/web/regression/javascript/selection/grid_selector_spec.js
@@ -22,7 +22,7 @@ define(["jquery",
         }];
 
         gridSelector = new GridSelector();
-        columns = gridSelector.getColumnDefinitionsWithCheckboxes(columns);
+        columns = gridSelector.getColumnDefinitions(columns);
 
         data = [];
         for (var i = 0; i < 10; i++) {
@@ -50,11 +50,7 @@ define(["jquery",
         expect(leftmostColumn.id).toBe('row-header-column');
       });
 
-      it("renders checkboxes for selecting columns", function () {
-        expect(container.find('[data-test="output-column-header"] input').length).toBe(2)
-      });
-
-      it("renders a checkbox for selecting all the cells", function () {
+      it("renders a button for selecting all the cells", function () {
         expect(container.find("[title='Select/Deselect All']").length).toBe(1);
       });
 
@@ -71,20 +67,14 @@ define(["jquery",
           expect(selectedRange.toRow).toBe(9);
         });
 
-        it("checks the checkbox", function () {
+        it("adds selected class", function () {
           container.find("[title='Select/Deselect All']").parent().click();
 
-          expect($(container.find("[data-id='checkbox-select-all']")).is(':checked')).toBeTruthy();
-        })
+          expect($(container.find("[data-id='select-all']")).hasClass('selected')).toBeTruthy();
+        });
       });
 
-      describe("when the main checkbox in the corner gets selected", function () {
-        it("unchecks all the columns", function () {
-          container.find("[title='Select/Deselect All']").click();
-
-          expect($(container.find('.slick-header-columns input')[1]).is(':checked')).toBeFalsy();
-          expect($(container.find('.slick-header-columns input')[2]).is(':checked')).toBeFalsy();
-        });
+      describe("when the select all button in the corner gets selected", function () {
 
         it("selects all the cells", function () {
           container.find("[title='Select/Deselect All']").click();
@@ -98,7 +88,7 @@ define(["jquery",
           expect(selectedRange.toRow).toBe(9);
         });
 
-        describe("when the main checkbox in the corner gets deselected", function () {
+        describe("when the select all button in the corner gets deselected", function () {
           beforeEach(function () {
             container.find("[title='Select/Deselect All']").click();
           });
@@ -116,11 +106,10 @@ define(["jquery",
             container.find("[title='Select/Deselect All']").click();
           });
 
-          it("unchecks the main checkbox", function () {
-            var ranges = [new Slick.Range(0, 0, 0, 1)];
-            rowSelectionModel.setSelectedRanges(ranges);
+          it("removes the selected class", function () {
+            container.find("[title='Select/Deselect All']").parent().click();
 
-            expect($(container.find("[title='Select/Deselect All']")).is(':checked')).toBeFalsy();
+            expect($(container.find("[data-id='select-all']")).hasClass('selected')).toBeFalsy();
           });
         });
       });
diff --git a/web/regression/javascript/selection/row_selector_spec.js b/web/regression/javascript/selection/row_selector_spec.js
index 5907c449..78348bca 100644
--- a/web/regression/javascript/selection/row_selector_spec.js
+++ b/web/regression/javascript/selection/row_selector_spec.js
@@ -36,7 +36,7 @@ define(
         for (var i = 0; i < 10; i++) {
           data.push(['some-value-' + i, 'second value ' + i]);
         }
-        columnDefinitions = rowSelector.getColumnDefinitionsWithCheckboxes(columnDefinitions);
+        columnDefinitions = rowSelector.getColumnDefinitions(columnDefinitions);
         grid = new SlickGrid(container, data, columnDefinitions);
 
         grid.registerPlugin(new ActiveCellCapture());
@@ -64,7 +64,7 @@ define(
 
       it("renders a span on the leftmost column", function () {
         expect(container.find('.slick-row').length).toBe(10);
-        expect(container.find('.slick-row .slick-cell:first-child input[type="checkbox"]').length).toBe(10);
+        expect(container.find('.slick-row .slick-cell:first-child span[data-cell-type="row-header-selector"]').length).toBe(10);
       });
 
       it("preserves the other attributes of column definitions", function () {
@@ -75,17 +75,17 @@ define(
       describe("selecting rows", function () {
         describe("when the user clicks a row header span", function () {
           it("selects the row", function () {
-            container.find('.slick-row .slick-cell:first-child input[type="checkbox"]')[0].click();
+            container.find('.slick-row .slick-cell:first-child span[data-cell-type="row-header-selector"]')[0].click();
 
             var selectedRanges = cellSelectionModel.getSelectedRanges();
             expectOnlyTheFirstRowToBeSelected(selectedRanges);
           });
 
-          it("checks the checkbox", function () {
-            container.find('.slick-row .slick-cell:first-child input[type="checkbox"]')[5].click();
+          it("add selected class to span", function () {
+            container.find('.slick-row .slick-cell:first-child span[data-cell-type="row-header-selector"]')[5].click();
 
-            expect($(container.find('.slick-row .slick-cell:first-child input[type="checkbox"]')[5])
-              .is(':checked')).toBeTruthy();
+            expect($(container.find('.slick-row .slick-cell:first-child span[data-cell-type="row-header-selector"]')[5])
+              .hasClass('selected')).toBeTruthy();
           });
         });
 
@@ -97,11 +97,11 @@ define(
             expectOnlyTheFirstRowToBeSelected(selectedRanges);
           });
 
-          it("checks the checkbox", function () {
+          it("add selected class to span", function () {
             container.find('.slick-row .slick-cell:first-child')[7].click();
 
-            expect($(container.find('.slick-row .slick-cell:first-child input[type="checkbox"]')[7])
-              .is(':checked')).toBeTruthy();
+            expect($(container.find('.slick-row .slick-cell:first-child span[data-cell-type="row-header-selector"]')[7])
+              .hasClass('selected')).toBeTruthy();
           });
         });
 
@@ -142,11 +142,11 @@ define(
             container.find('.slick-row .slick-cell:first-child')[4].click();
           });
 
-          it("should uncheck the checkbox", function () {
+          it("should remove the selected class", function () {
             cellSelectionModel.setSelectedRanges([]);
 
-            expect($(container.find('.slick-row .slick-cell:first-child input[type="checkbox"]')[4])
-              .is(':checked')).toBeFalsy();
+            expect($(container.find('.slick-row .slick-cell:first-child span[data-cell-type="row-header-selector"]')[4])
+              .hasClass('selected')).toBeFalsy();
           });
         });
 
@@ -155,10 +155,10 @@ define(
             container.find('.slick-row .slick-cell:first-child')[1].click();
           });
 
-          it("unchecks checkbox", function () {
+          it("removes the selected class", function () {
             container.find('.slick-row .slick-cell:first-child')[1].click();
-            expect($(container.find('.slick-row .slick-cell:first-child input[type="checkbox"]')[1])
-              .is(':checked')).toBeFalsy();
+            expect($(container.find('.slick-row .slick-cell:first-child span[data-cell-type="row-header-selector"]')[1])
+              .hasClass('selected')).toBeFalsy();
           });
 
           it("unselects the row", function () {
diff --git a/web/regression/javascript/slickgrid/cell_selector_spec.js b/web/regression/javascript/slickgrid/cell_selector_spec.js
index f1178541..841ea72b 100644
--- a/web/regression/javascript/slickgrid/cell_selector_spec.js
+++ b/web/regression/javascript/slickgrid/cell_selector_spec.js
@@ -9,13 +9,13 @@
 
 define(["jquery",
     "slickgrid/slick.grid",
-    "slickgrid/slick.rowselectionmodel",
+    "slickgrid/slick.cellselectionmodel",
     "sources/slickgrid/cell_selector",
     "sources/selection/range_selection_helper"
   ],
-  function ($, SlickGrid, RowSelectionModel, CellSelector, RangeSelectionHelper) {
+  function ($, SlickGrid, CellSelectionModel, CellSelector, RangeSelectionHelper) {
     describe("CellSelector", function () {
-      var container, columns, cellSelector, data, rowSelectionModel, grid;
+      var container, columns, cellSelector, data, cellSelectionModel, grid;
       beforeEach(function () {
         container = $("<div></div>");
         container.height(9999);
@@ -34,8 +34,8 @@ define(["jquery",
         }
         grid = new SlickGrid(container, data, columns);
 
-        rowSelectionModel = new RowSelectionModel();
-        grid.setSelectionModel(rowSelectionModel);
+        cellSelectionModel = new CellSelectionModel();
+        grid.setSelectionModel(cellSelectionModel);
 
         grid.registerPlugin(cellSelector);
         grid.invalidate();
@@ -52,7 +52,7 @@ define(["jquery",
           var row = 1, column = 0;
           $(container.find(".slick-row .slick-cell.l" + column)[row]).click();
 
-          var selectedRanges = rowSelectionModel.getSelectedRanges();
+          var selectedRanges = cellSelectionModel.getSelectedRanges();
           expect(selectedRanges.length).toBe(1);
           expect(selectedRanges[0].fromCell).toBe(0);
           expect(selectedRanges[0].toCell).toBe(0);
@@ -62,14 +62,14 @@ define(["jquery",
 
         it("deselects previously selected ranges", function () {
           var row2Range = RangeSelectionHelper.rangeForRow(grid, 2);
-          var ranges = RangeSelectionHelper.addRange(rowSelectionModel.getSelectedRanges(),
+          var ranges = RangeSelectionHelper.addRange(cellSelectionModel.getSelectedRanges(),
             row2Range);
-          rowSelectionModel.setSelectedRanges(ranges);
+          cellSelectionModel.setSelectedRanges(ranges);
 
           var row = 4, column = 1;
           $(container.find(".slick-row .slick-cell.l" + column)[row]).click();
 
-          expect(RangeSelectionHelper.isRangeSelected(rowSelectionModel.getSelectedRanges(), row2Range))
+          expect(RangeSelectionHelper.isRangeSelected(cellSelectionModel.getSelectedRanges(), row2Range))
             .toBe(false);
         });
       });
