public BoardCanvas(Shell shell, AbstractGame game) {
        super(shell, SWT.NONE);
        this.game = game;
        int boardWidth = game.getBoardWidth();
        int boardHeight = game.getBoardHeight();
        cellSize = new CellSizeCalculator(shell).getPixelSize(boardWidth, boardHeight);
        if (cellSize > 0) {
            GC gc = new GC(this);

            setLayoutData(initCanvasGridData(boardWidth, boardHeight));
            setBackground(getDisplay().getSystemColor(SWT.COLOR_WHITE));
            drawBackground(gc, 0, 0, boardWidth * cellSize, boardHeight * cellSize);
            paintCells();
        } else {
            new ErrorMessageBox(shell, "Die Auflösung reicht leider nicht aus, um das Spielfeld anzuzeigen.");
            shell.dispose();
        }
    }