public Object copyColorData() {
      // Note:  This is a fudge.  The data about defaultColor,
      // groutingColor, and alwaysDrawGrouting is added to the
      // last row of the grid.  If alwaysDrawGrouting is true,
      // this is recorded by adding an extra empty space to
      // that row.
      Color[][] copy = new Color[rows][columns];
      // Replace the last row with a longer row.
      if (alwaysDrawGrouting)
         copy[rows-1] = new Color[columns+3];
      else
         copy[rows-1] = new Color[columns+2];
      for (int r = 0; r < rows; r++)
         for (int c = 0; c < columns; c++)
            copy[r][c] = grid[r][c];
      copy[rows-1][columns] = defaultColor;
      copy[rows-1][columns+1] = groutingColor;
      return copy;
   }