diff --git a/fastlane/metadata/android/en-US/changelogs/4.txt b/fastlane/metadata/android/en-US/changelogs/4.txt
new file mode 100644
index 0000000000000000000000000000000000000000..34df8c3c22cf49b805d06408552d3f3983a16a76
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/4.txt
@@ -0,0 +1 @@
+Improve grid display.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/4.txt b/fastlane/metadata/android/fr-FR/changelogs/4.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2dafaf6d147bab78ea8d34f89013c70c5ed05a1c
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/4.txt
@@ -0,0 +1 @@
+Amélioration de l'affichage de la grille.
diff --git a/lib/ui/widgets/game/cell.dart b/lib/ui/widgets/game/cell.dart
index c2b8c7a124a7f73bd2ea249ffa78a25975cd923b..8dafbe85a4212637b4e4f4ea3808e7123a2a7dba 100644
--- a/lib/ui/widgets/game/cell.dart
+++ b/lib/ui/widgets/game/cell.dart
@@ -1,4 +1,3 @@
-
 import 'package:flutter/material.dart';
 import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
 
@@ -76,19 +75,35 @@ class CellWidget extends StatelessWidget {
     return 'assets/ui/cell_empty.png';
   }
 
+  Color getBaseColorFromBlockId(String blockId) {
+    const List<Color> paletteColors = [
+      Color.fromRGBO(0xbe, 0x7f, 0x51, 1),
+      Color.fromRGBO(0x50, 0x72, 0x8b, 1),
+      Color.fromRGBO(0xae, 0x70, 0x6f, 1),
+      Color.fromRGBO(0x91, 0x61, 0x87, 1),
+      Color.fromRGBO(0xe1, 0x8a, 0x2b, 1),
+      Color.fromRGBO(0x88, 0x77, 0x6d, 1),
+      Color.fromRGBO(0xd4, 0xbe, 0x1e, 1),
+      Color.fromRGBO(0xba, 0x96, 0x3a, 1),
+      Color.fromRGBO(0xa2, 0x9a, 0x5c, 1),
+    ];
+
+    final int blockIdValue = blockId.codeUnits.first - 'A'.codeUnits.first;
+    return paletteColors[blockIdValue % paletteColors.length].lighten(20);
+  }
+
   // Compute cell background color, from cell state
   Color getBackgroundColor(Activity activity) {
-    final Color editableCellColor = Colors.grey.shade100;
     final Color editableCellColorConflict = Colors.pink.shade100;
-    final Color fixedCellColor = Colors.grey.shade300;
+    final int fixedCellColorDarkAmount = 10;
     final Color fixedCellColorConflict = Colors.pink.shade200;
     final Color editableAnimated = Colors.green.shade200;
     final Color fixedAnimated = Colors.green.shade300;
 
-    Color backgroundColor = editableCellColor;
+    Color backgroundColor = getBaseColorFromBlockId(cell.blockId);
 
     if (cell.isFixed == true) {
-      backgroundColor = fixedCellColor;
+      backgroundColor = backgroundColor.darken(fixedCellColorDarkAmount);
     }
 
     final int conflictsCount = activity.boardConflicts[cell.location.row][cell.location.col];
@@ -118,12 +133,14 @@ class CellWidget extends StatelessWidget {
 
   // Compute cell borders, from board size and cell state
   Border getCellBorders(Activity activity) {
-    final Color cellBorderDarkColor = Colors.grey.shade800;
-    final Color cellBorderLightColor = Colors.grey.shade400;
+    final Color baseColor = getBaseColorFromBlockId(cell.blockId);
+
+    final Color cellBorderDarkColor = baseColor.darken(50);
+    final Color cellBorderLightColor = baseColor.lighten(10);
     const Color cellBorderSelectedColor = Colors.red;
 
     Color cellBorderColor = cellBorderSelectedColor;
-    final double cellBorderWidth = 4;
+    const double cellBorderWidth = 8;
 
     if (!activity.isRunning) {
       cellBorderColor = Colors.green.shade700;
diff --git a/pubspec.yaml b/pubspec.yaml
index 982dfe16ae68a58a15ab0e374dd7b72a9fcaebfb..65a936238ae1b2ef9776628c24cd3bf94628d9db 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@ description: A suguru game application.
 
 publish_to: "none"
 
-version: 0.0.3+3
+version: 0.0.4+4
 
 environment:
   sdk: "^3.0.0"