diff --git a/android/gradle.properties b/android/gradle.properties
index d6af5de7dd3b01541eb540fa8dfd4d0caed97461..7d3ad5fb1ba80989d0c88e55ec415fdc9f5d25f7 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.45
-app.versionCode=45
+app.versionName=0.0.46
+app.versionCode=46
diff --git a/assets/translations/en.json b/assets/translations/en.json
index f56407bb0e040ae843bd5078573116c48885a23e..39f43601fb669841ab7db6ae1e9445dedd33d60b 100644
--- a/assets/translations/en.json
+++ b/assets/translations/en.json
@@ -28,10 +28,11 @@
   "settings_title": "Settings",
   "settings_label_username": "Username: ",
   "settings_label_security_token": "Security token: ",
+  "settings_title_days_count": "Days counts: ",
   "settings_label_discoveries_days_count": "Discoveries: ",
-  "settings_label_distribution_days_count": "Distributions : ",
-  "settings_label_statistics_recent_days_count": "Recent statistics: ",
-  "settings_label_timeline_days_count": "Timeline: ",
+  "settings_label_distribution_days_count": "Distributions (by day/hour) : ",
+  "settings_label_statistics_recent_days_count": "Statistics: ",
+  "settings_label_timeline_days_count": "Global timeline: ",
   "settings_label_top_artists_days_count": "Top Artists: ",
 
   "settings_button_save": "Save",
diff --git a/assets/translations/fr.json b/assets/translations/fr.json
index f9d2d14591516b4a112a53284bf1864eb5345744..a6958bd9756fabc8972be9d3899b09d901b17b42 100644
--- a/assets/translations/fr.json
+++ b/assets/translations/fr.json
@@ -28,10 +28,11 @@
   "settings_title": "Paramètres",
   "settings_label_username": "Utilisateur : ",
   "settings_label_security_token": "Jeton de sécurité : ",
+  "settings_title_days_count": "Nombre de jours : ",
   "settings_label_discoveries_days_count": "Découvertes : ",
-  "settings_label_distribution_days_count": "Répartitions : ",
-  "settings_label_statistics_recent_days_count": "Statistiques récentes : ",
-  "settings_label_timeline_days_count": "Timeline : ",
+  "settings_label_distribution_days_count": "Répartitions (par jour/heure) : ",
+  "settings_label_statistics_recent_days_count": "Statistiques : ",
+  "settings_label_timeline_days_count": "Timeline globale : ",
   "settings_label_top_artists_days_count": "Top Artistes : ",
   "settings_button_save": "Enregistrer",
 
diff --git a/fastlane/metadata/android/en-US/changelogs/46.txt b/fastlane/metadata/android/en-US/changelogs/46.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2e1b5ca65ce7a1a53b8b92dfe5994807d83e7b05
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/46.txt
@@ -0,0 +1 @@
+Improve settings page.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/46.txt b/fastlane/metadata/android/fr-FR/changelogs/46.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6ae7d0cf7efea56008ff064109499000ec8b1309
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/46.txt
@@ -0,0 +1 @@
+Améliorations sur la page des paramètres.
diff --git a/lib/ui/screens/settings.dart b/lib/ui/screens/settings.dart
index 2dc9cec7f67713bf5f6f966eca30dbc60dc7442d..f9eb4d62a48c4f589ddd6072e6f86978798489aa 100644
--- a/lib/ui/screens/settings.dart
+++ b/lib/ui/screens/settings.dart
@@ -1,6 +1,7 @@
+import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 
-import 'package:scrobbles/ui/widgets/header_app.dart';
+import 'package:scrobbles/ui/widgets/app_titles.dart';
 import 'package:scrobbles/ui/widgets/settings_form.dart';
 
 class ScreenSettings extends StatelessWidget {
@@ -14,8 +15,9 @@ class ScreenSettings extends StatelessWidget {
       mainAxisSize: MainAxisSize.max,
       children: <Widget>[
         SizedBox(height: 8),
-        AppHeader(text: 'settings_title'),
+        AppTitle1(text: tr('settings_title')),
         SizedBox(height: 8),
+        AppTitle2(text: tr('settings_title_days_count')),
         SettingsForm(),
       ],
     );
diff --git a/lib/ui/widgets/app_bar.dart b/lib/ui/widgets/app_bar.dart
index 6db981e1ee2ba1a0c98cb52e6f5605586a6ff371..1d9618a0ce950fe41c4e10a74f8ddc8ac1b62f54 100644
--- a/lib/ui/widgets/app_bar.dart
+++ b/lib/ui/widgets/app_bar.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:unicons/unicons.dart';
 
-import 'package:scrobbles/ui/widgets/header_app.dart';
+import 'package:scrobbles/ui/widgets/app_titles.dart';
 
 class StandardAppBar extends StatelessWidget implements PreferredSizeWidget {
   final Function() notifyParent;
@@ -11,7 +11,7 @@ class StandardAppBar extends StatelessWidget implements PreferredSizeWidget {
   @override
   Widget build(BuildContext context) {
     return AppBar(
-      title: const AppHeader(text: 'app_name'),
+      title: const AppTitle(text: 'app_name'),
       actions: [
         IconButton(
           onPressed: () {
diff --git a/lib/ui/widgets/app_titles.dart b/lib/ui/widgets/app_titles.dart
new file mode 100644
index 0000000000000000000000000000000000000000..93541243613b0f20e76485520a275d1527a6fcc9
--- /dev/null
+++ b/lib/ui/widgets/app_titles.dart
@@ -0,0 +1,47 @@
+import 'package:easy_localization/easy_localization.dart';
+import 'package:flutter/material.dart';
+
+class AppTitle extends StatelessWidget {
+  const AppTitle({super.key, required this.text});
+
+  final String text;
+
+  @override
+  Widget build(BuildContext context) {
+    return Text(
+      tr(text),
+      textAlign: TextAlign.start,
+      style: Theme.of(context).textTheme.headlineLarge!.apply(fontWeightDelta: 2),
+    );
+  }
+}
+
+class AppTitle1 extends StatelessWidget {
+  const AppTitle1({super.key, required this.text});
+
+  final String text;
+
+  @override
+  Widget build(BuildContext context) {
+    return Text(
+      text,
+      textAlign: TextAlign.start,
+      style: Theme.of(context).textTheme.titleLarge!.apply(fontWeightDelta: 2),
+    );
+  }
+}
+
+class AppTitle2 extends StatelessWidget {
+  const AppTitle2({super.key, required this.text});
+
+  final String text;
+
+  @override
+  Widget build(BuildContext context) {
+    return Text(
+      text,
+      textAlign: TextAlign.start,
+      style: Theme.of(context).textTheme.titleMedium!.apply(fontWeightDelta: 2),
+    );
+  }
+}
diff --git a/lib/ui/widgets/card_content.dart b/lib/ui/widgets/card_content.dart
index 46d69709f7ad1d383c129caf709fae1b800e1ebd..b69b7e891fe6b278cdb3fad8da187b79b1486123 100644
--- a/lib/ui/widgets/card_content.dart
+++ b/lib/ui/widgets/card_content.dart
@@ -1,4 +1,5 @@
 import 'package:flutter/material.dart';
+import 'package:scrobbles/ui/widgets/app_titles.dart';
 
 class CardContent extends StatelessWidget {
   const CardContent({
@@ -35,11 +36,7 @@ class CardContent extends StatelessWidget {
               crossAxisAlignment: CrossAxisAlignment.start,
               mainAxisAlignment: MainAxisAlignment.start,
               children: [
-                Text(
-                  this.title,
-                  style:
-                      Theme.of(context).primaryTextTheme.titleLarge!.apply(fontWeightDelta: 2),
-                ),
+                AppTitle1(text: this.title),
                 this.loader,
               ],
             ),
diff --git a/lib/ui/widgets/header_app.dart b/lib/ui/widgets/header_app.dart
deleted file mode 100644
index 77b015bc6cb8712734f5383ca58cd818e0a51f0f..0000000000000000000000000000000000000000
--- a/lib/ui/widgets/header_app.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-import 'package:easy_localization/easy_localization.dart';
-import 'package:flutter/material.dart';
-
-class AppHeader extends StatelessWidget {
-  const AppHeader({super.key, required this.text});
-
-  final String text;
-
-  @override
-  Widget build(BuildContext context) {
-    return Text(
-      tr(text),
-      textAlign: TextAlign.start,
-      style: Theme.of(context).textTheme.headlineMedium!.apply(fontWeightDelta: 2),
-    );
-  }
-}
diff --git a/lib/ui/widgets/settings_form.dart b/lib/ui/widgets/settings_form.dart
index 1046f865b4a878a013c381f2edf7fb9b0d3be187..4c981f2a865ced49e465e2227bb5572e7aae3575 100644
--- a/lib/ui/widgets/settings_form.dart
+++ b/lib/ui/widgets/settings_form.dart
@@ -101,121 +101,121 @@ class _SettingsFormState extends State<SettingsForm> {
         // ),
         // SizedBox(height: 20),
 
-        // Discoveries
+        // Statistics (recent)
         Row(
-          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          mainAxisAlignment: MainAxisAlignment.end,
           crossAxisAlignment: CrossAxisAlignment.center,
           children: [
-            Text('settings_label_discoveries_days_count').tr(),
+            Text('settings_label_statistics_recent_days_count').tr(),
             ToggleButtons(
               onPressed: (int index) {
                 setState(() {
-                  discoveriesDaysCount = DefaultSettings.allowedValues[index];
-                  for (int i = 0; i < _selectedDiscoveriesDaysCount.length; i++) {
-                    _selectedDiscoveriesDaysCount[i] = i == index;
+                  statisticsRecentDaysCount = DefaultSettings.allowedValues[index];
+                  for (int i = 0; i < _selectedStatisticsRecentDaysCount.length; i++) {
+                    _selectedStatisticsRecentDaysCount[i] = i == index;
                   }
                 });
                 saveSettings();
               },
               borderRadius: const BorderRadius.all(Radius.circular(8)),
               constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
-              isSelected: _selectedDiscoveriesDaysCount,
+              isSelected: _selectedStatisticsRecentDaysCount,
               children: DefaultSettings.allowedValues.map((e) => Text(e.toString())).toList(),
             ),
           ],
         ),
 
-        // Distribution by day/hour + heatmap
+        // Timeline
         Row(
-          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          mainAxisAlignment: MainAxisAlignment.end,
           crossAxisAlignment: CrossAxisAlignment.center,
           children: [
-            Text('settings_label_distribution_days_count').tr(),
+            Text('settings_label_timeline_days_count').tr(),
             ToggleButtons(
               onPressed: (int index) {
                 setState(() {
-                  distributionDaysCount = DefaultSettings.allowedValues[index];
-                  for (int i = 0; i < _selectedDistributionDaysCount.length; i++) {
-                    _selectedDistributionDaysCount[i] = i == index;
+                  timelineDaysCount = DefaultSettings.allowedValues[index];
+                  for (int i = 0; i < _selectedTimelineDaysCount.length; i++) {
+                    _selectedTimelineDaysCount[i] = i == index;
                   }
                 });
                 saveSettings();
               },
               borderRadius: const BorderRadius.all(Radius.circular(8)),
               constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
-              isSelected: _selectedDistributionDaysCount,
+              isSelected: _selectedTimelineDaysCount,
               children: DefaultSettings.allowedValues.map((e) => Text(e.toString())).toList(),
             ),
           ],
         ),
 
-        // Statistics (recent)
+        // Top Artists
         Row(
-          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          mainAxisAlignment: MainAxisAlignment.end,
           crossAxisAlignment: CrossAxisAlignment.center,
           children: [
-            Text('settings_label_statistics_recent_days_count').tr(),
+            Text('settings_label_top_artists_days_count').tr(),
             ToggleButtons(
               onPressed: (int index) {
                 setState(() {
-                  statisticsRecentDaysCount = DefaultSettings.allowedValues[index];
-                  for (int i = 0; i < _selectedStatisticsRecentDaysCount.length; i++) {
-                    _selectedStatisticsRecentDaysCount[i] = i == index;
+                  topArtistsDaysCount = DefaultSettings.allowedValues[index];
+                  for (int i = 0; i < _selectedTopArtistsDaysCount.length; i++) {
+                    _selectedTopArtistsDaysCount[i] = i == index;
                   }
                 });
                 saveSettings();
               },
               borderRadius: const BorderRadius.all(Radius.circular(8)),
               constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
-              isSelected: _selectedStatisticsRecentDaysCount,
+              isSelected: _selectedTopArtistsDaysCount,
               children: DefaultSettings.allowedValues.map((e) => Text(e.toString())).toList(),
             ),
           ],
         ),
 
-        // Timeline
+        // Discoveries
         Row(
-          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          mainAxisAlignment: MainAxisAlignment.end,
           crossAxisAlignment: CrossAxisAlignment.center,
           children: [
-            Text('settings_label_timeline_days_count').tr(),
+            Text('settings_label_discoveries_days_count').tr(),
             ToggleButtons(
               onPressed: (int index) {
                 setState(() {
-                  timelineDaysCount = DefaultSettings.allowedValues[index];
-                  for (int i = 0; i < _selectedTimelineDaysCount.length; i++) {
-                    _selectedTimelineDaysCount[i] = i == index;
+                  discoveriesDaysCount = DefaultSettings.allowedValues[index];
+                  for (int i = 0; i < _selectedDiscoveriesDaysCount.length; i++) {
+                    _selectedDiscoveriesDaysCount[i] = i == index;
                   }
                 });
                 saveSettings();
               },
               borderRadius: const BorderRadius.all(Radius.circular(8)),
               constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
-              isSelected: _selectedTimelineDaysCount,
+              isSelected: _selectedDiscoveriesDaysCount,
               children: DefaultSettings.allowedValues.map((e) => Text(e.toString())).toList(),
             ),
           ],
         ),
 
-        // Top Artists
+        // Distribution by day/hour + heatmap
         Row(
-          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          mainAxisAlignment: MainAxisAlignment.end,
           crossAxisAlignment: CrossAxisAlignment.center,
           children: [
-            Text('settings_label_top_artists_days_count').tr(),
+            Text('settings_label_distribution_days_count').tr(),
             ToggleButtons(
               onPressed: (int index) {
                 setState(() {
-                  topArtistsDaysCount = DefaultSettings.allowedValues[index];
-                  for (int i = 0; i < _selectedTopArtistsDaysCount.length; i++) {
-                    _selectedTopArtistsDaysCount[i] = i == index;
+                  distributionDaysCount = DefaultSettings.allowedValues[index];
+                  for (int i = 0; i < _selectedDistributionDaysCount.length; i++) {
+                    _selectedDistributionDaysCount[i] = i == index;
                   }
                 });
                 saveSettings();
               },
               borderRadius: const BorderRadius.all(Radius.circular(8)),
               constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
-              isSelected: _selectedTopArtistsDaysCount,
+              isSelected: _selectedDistributionDaysCount,
               children: DefaultSettings.allowedValues.map((e) => Text(e.toString())).toList(),
             ),
           ],
diff --git a/pubspec.yaml b/pubspec.yaml
index 2c08e0d227690f4817b8b00f3e465e59e4c8eaf2..52dd8059a04abbbe1d820cc4c745106bb79c0740 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@ description: Display scrobbles data and charts
 
 publish_to: 'none'
 
-version: 0.0.45+45
+version: 0.0.46+46
 
 environment:
   sdk: '^3.0.0'