@Override
    protected void paintComponent(Graphics g) {
        
        Graphics2D g2 = (Graphics2D) g;
        super.paintComponent(g2);

        // If initialized
        if (viewImage != null && imageDimension != null) {
            if (scaledImage == null || // If not yet scaled, or needs rescaling
               (viewImage.getWidth() != imageDimension.width &&
                viewImage.getHeight() != imageDimension.height)) {
                
                // Rescale
                scaledImage = viewImage.getScaledInstance(imageDimension.width,
                                                          imageDimension.height,
                                                          Image.SCALE_SMOOTH);
                
            }
            // Draw image
            g2.drawImage(scaledImage, viewTopLeft.x, viewTopLeft.y, null);
        }
        
        // If highlights are on
        if (highlights) {
            // highlight selectedCell with height, width, and location
            g2.setColor(new Color(0, 0, 255, 64));
            g2.fillRect(firstXCoordinate, firstYCoordinate,
                        columnWidth, rowHeight);
        }
        
    }