diff --git a/apps/dashboard/js/dashboard.js b/apps/dashboard/js/dashboard.js
index 457d0de98a378e3bc0c7fd27c182bccb842765e8..d9c5cb3350f7eda4e46b59441b772141feeaedb4 100644
Binary files a/apps/dashboard/js/dashboard.js and b/apps/dashboard/js/dashboard.js differ
diff --git a/apps/dashboard/js/dashboard.js.map b/apps/dashboard/js/dashboard.js.map
index 960d5ec9960c078c24d7181d168f0fe7fe78cc7a..99617a1dcec28bb9eff8db1858416153801bf372 100644
Binary files a/apps/dashboard/js/dashboard.js.map and b/apps/dashboard/js/dashboard.js.map differ
diff --git a/apps/dashboard/lib/Controller/DashboardController.php b/apps/dashboard/lib/Controller/DashboardController.php
index 57717b26698431036be3a46f02ae1d13e7658081..bc6cd02abbc5fe40540b9134b762a12d391fe937 100644
--- a/apps/dashboard/lib/Controller/DashboardController.php
+++ b/apps/dashboard/lib/Controller/DashboardController.php
@@ -35,6 +35,7 @@ use OCP\AppFramework\Http\FileDisplayResponse;
 use OCP\AppFramework\Http\JSONResponse;
 use OCP\AppFramework\Http\NotFoundResponse;
 use OCP\AppFramework\Http\TemplateResponse;
+use OCP\App\IAppManager;
 use OCP\Dashboard\IManager;
 use OCP\Dashboard\IWidget;
 use OCP\Dashboard\RegisterWidgetEvent;
@@ -49,6 +50,8 @@ class DashboardController extends Controller {
 	private $inititalStateService;
 	/** @var IEventDispatcher */
 	private $eventDispatcher;
+	/** @var IAppManager */
+	private $appManager;
 	/** @var IManager */
 	private $dashboardManager;
 	/** @var IConfig */
@@ -65,6 +68,7 @@ class DashboardController extends Controller {
 		IRequest $request,
 		IInitialStateService $initialStateService,
 		IEventDispatcher $eventDispatcher,
+		IAppManager $appManager,
 		IManager $dashboardManager,
 		IConfig $config,
 		BackgroundService $backgroundService,
@@ -74,6 +78,7 @@ class DashboardController extends Controller {
 
 		$this->inititalStateService = $initialStateService;
 		$this->eventDispatcher = $eventDispatcher;
+		$this->appManager = $appManager;
 		$this->dashboardManager = $dashboardManager;
 		$this->config = $config;
 		$this->backgroundService = $backgroundService;
@@ -109,6 +114,11 @@ class DashboardController extends Controller {
 		// It does not matter if some statuses are missing from the array, missing ones are considered enabled
 		$statuses = ($statuses && count($statuses) > 0) ? $statuses : ['weather' => true];
 
+		// if theming app is enabled and wants to override default, we pass it
+		$themingDefaultBackground = $this->appManager->isEnabledForUser('theming')
+			? $this->config->getAppValue('theming', 'backgroundMime', '')
+			: '';
+		$this->inititalStateService->provideInitialState('dashboard', 'themingDefaultBackground', $themingDefaultBackground);
 		$this->inititalStateService->provideInitialState('dashboard', 'panels', $widgets);
 		$this->inititalStateService->provideInitialState('dashboard', 'statuses', $statuses);
 		$this->inititalStateService->provideInitialState('dashboard', 'layout', $userLayout);
diff --git a/apps/dashboard/src/App.vue b/apps/dashboard/src/App.vue
index 0d09bcc45377c9e239b0590761d82f7b0e75c94a..c5eed836faa99389f3ae566b8e907a3afd176c6a 100644
--- a/apps/dashboard/src/App.vue
+++ b/apps/dashboard/src/App.vue
@@ -68,7 +68,9 @@
 				<a v-if="isAdmin" :href="appStoreUrl" class="button">{{ t('dashboard', 'Get more widgets from the app store') }}</a>
 
 				<h3>{{ t('dashboard', 'Change background image') }}</h3>
-				<BackgroundSettings :background="background" @update:background="updateBackground" />
+				<BackgroundSettings :background="background"
+					:theming-default-background="themingDefaultBackground"
+					@update:background="updateBackground" />
 
 				<h3>{{ t('dashboard', 'Weather service') }}</h3>
 				<p>
@@ -95,11 +97,11 @@ import { generateUrl } from '@nextcloud/router'
 import isMobile from './mixins/isMobile'
 import BackgroundSettings from './components/BackgroundSettings'
 import getBackgroundUrl from './helpers/getBackgroundUrl'
-import prefixWithBaseUrl from './helpers/prefixWithBaseUrl'
 
 const panels = loadState('dashboard', 'panels')
 const firstRun = loadState('dashboard', 'firstRun')
 const background = loadState('dashboard', 'background')
+const themingDefaultBackground = loadState('dashboard', 'themingDefaultBackground')
 const version = loadState('dashboard', 'version')
 const shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')
 const statusInfo = {
@@ -142,16 +144,17 @@ export default {
 			appStoreUrl: generateUrl('/settings/apps/dashboard'),
 			statuses: {},
 			background,
+			themingDefaultBackground,
 			version,
-			defaultBackground: window.OCA.Accessibility?.theme === 'dark' ? prefixWithBaseUrl('flickr-148302424@N05-36591009215.jpg?v=1') : prefixWithBaseUrl('flickr-paszczak000-8715851521.jpg?v=1'),
 		}
 	},
 	computed: {
 		backgroundImage() {
-			return getBackgroundUrl(this.background, this.version)
+			return getBackgroundUrl(this.background, this.version, this.themingDefaultBackground)
 		},
 		backgroundStyle() {
-			if (this.background.match(/#[0-9A-Fa-f]{6}/g)) {
+			if ((this.background === 'default' && this.themingDefaultBackground === 'backgroundColor')
+				|| this.background.match(/#[0-9A-Fa-f]{6}/g)) {
 				return null
 			}
 			return {
diff --git a/apps/dashboard/src/components/BackgroundSettings.vue b/apps/dashboard/src/components/BackgroundSettings.vue
index be94737fdadecb53294f1a2c85bf260ede1ef24c..936cfdef4864dac05f50b82cc6d9ae87c6de678f 100644
--- a/apps/dashboard/src/components/BackgroundSettings.vue
+++ b/apps/dashboard/src/components/BackgroundSettings.vue
@@ -66,6 +66,10 @@ export default {
 			type: String,
 			default: 'default',
 		},
+		themingDefaultBackground: {
+			type: String,
+			default: '',
+		},
 	},
 	data() {
 		return {
@@ -88,8 +92,8 @@ export default {
 	methods: {
 		async update(data) {
 			const background = data.type === 'custom' || data.type === 'default' ? data.type : data.value
-			this.backgroundImage = getBackgroundUrl(background, data.version)
-			if (data.type === 'color') {
+			this.backgroundImage = getBackgroundUrl(background, data.version, this.themingDefaultBackground)
+			if (data.type === 'color' || (data.type === 'default' && this.themingDefaultBackground === 'backgroundColor')) {
 				this.$emit('update:background', data)
 				this.loading = false
 				return
diff --git a/apps/dashboard/src/helpers/getBackgroundUrl.js b/apps/dashboard/src/helpers/getBackgroundUrl.js
index 6090786884ced4c4ec3d2e68af8ec39e105a31e9..3af48030534e4e47d9cd8cb35f24b0032aa68f36 100644
--- a/apps/dashboard/src/helpers/getBackgroundUrl.js
+++ b/apps/dashboard/src/helpers/getBackgroundUrl.js
@@ -23,8 +23,11 @@
 import { generateUrl } from '@nextcloud/router'
 import prefixWithBaseUrl from './prefixWithBaseUrl'
 
-export default (background, time = 0) => {
+export default (background, time = 0, themingDefaultBackground = '') => {
 	if (background === 'default') {
+		if (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {
+			return generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster
+		}
 		if (window.OCA.Accessibility.theme === 'dark') {
 			return prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')
 		}
diff --git a/apps/theming/lib/Capabilities.php b/apps/theming/lib/Capabilities.php
index d10002c9deae89a904acdccba573de4a95626ccf..f0c4d2663622c74a37d75ac4319046f36496fdca 100644
--- a/apps/theming/lib/Capabilities.php
+++ b/apps/theming/lib/Capabilities.php
@@ -69,7 +69,7 @@ class Capabilities implements IPublicCapability {
 	 * @return array
 	 */
 	public function getCapabilities() {
-		$backgroundLogo = $this->config->getAppValue('theming', 'backgroundMime', false);
+		$backgroundLogo = $this->config->getAppValue('theming', 'backgroundMime', '');
 		$color = $this->theming->getColorPrimary();
 		return [
 			'theming' => [
@@ -82,10 +82,10 @@ class Capabilities implements IPublicCapability {
 				'color-element-bright' => $this->util->elementColor($color),
 				'color-element-dark' => $this->util->elementColor($color, false),
 				'logo' => $this->url->getAbsoluteURL($this->theming->getLogo()),
-				'background' => $backgroundLogo === 'backgroundColor' || ($backgroundLogo === false && $this->theming->getColorPrimary() !== '#0082c9') ?
+				'background' => $backgroundLogo === 'backgroundColor' || ($backgroundLogo === '' && $this->theming->getColorPrimary() !== '#0082c9') ?
 					$this->theming->getColorPrimary() :
 					$this->url->getAbsoluteURL($this->theming->getBackground()),
-				'background-plain' => $backgroundLogo === 'backgroundColor' || ($backgroundLogo === false && $this->theming->getColorPrimary() !== '#0082c9'),
+				'background-plain' => $backgroundLogo === 'backgroundColor' || ($backgroundLogo === '' && $this->theming->getColorPrimary() !== '#0082c9'),
 				'background-default' => !$this->util->isBackgroundThemed(),
 				'logoheader' => $this->url->getAbsoluteURL($this->theming->getLogo()),
 				'favicon' => $this->url->getAbsoluteURL($this->theming->getLogo()),
diff --git a/apps/theming/lib/ImageManager.php b/apps/theming/lib/ImageManager.php
index 469480d1e1022ba771e9a025b4ff3a499fdb455c..d3b5f6130e740beff963328658ac8c6e65c53b3d 100644
--- a/apps/theming/lib/ImageManager.php
+++ b/apps/theming/lib/ImageManager.php
@@ -101,9 +101,9 @@ class ImageManager {
 	 * @throws NotPermittedException
 	 */
 	public function getImage(string $key, bool $useSvg = true): ISimpleFile {
-		$logo = $this->config->getAppValue('theming', $key . 'Mime', false);
+		$logo = $this->config->getAppValue('theming', $key . 'Mime', '');
 		$folder = $this->appData->getFolder('images');
-		if ($logo === false || !$folder->fileExists($key)) {
+		if ($logo === '' || !$folder->fileExists($key)) {
 			throw new NotFoundException();
 		}
 		if (!$useSvg && $this->shouldReplaceIcons()) {
diff --git a/apps/theming/lib/Service/JSDataService.php b/apps/theming/lib/Service/JSDataService.php
index 89c4cd9c027d1eff73da54de2dab2a0c61309b4e..d87d11a0fe085c248f97c20ffd51868878af9142 100644
--- a/apps/theming/lib/Service/JSDataService.php
+++ b/apps/theming/lib/Service/JSDataService.php
@@ -59,7 +59,7 @@ class JSDataService implements \JsonSerializable {
 			'imprintUrl' => $this->themingDefaults->getImprintUrl(),
 			'privacyUrl' => $this->themingDefaults->getPrivacyUrl(),
 			'inverted' => $this->util->invertTextColor($this->themingDefaults->getColorPrimary()),
-			'cacheBuster' => $this->appConfig->getAppValue(Application::class, 'cachebuster', '0'),
+			'cacheBuster' => $this->appConfig->getAppValue(Application::APP_ID, 'cachebuster', '0'),
 		];
 	}
 }
diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php
index 01af4d1b1771be8115e2108f17692a7d6a2fa551..f47e4ae294d67cee4c28b69e46ad72c894acbfbd 100644
--- a/apps/theming/lib/ThemingDefaults.php
+++ b/apps/theming/lib/ThemingDefaults.php
@@ -223,7 +223,7 @@ class ThemingDefaults extends \OC_Defaults {
 	 * @return string
 	 */
 	public function getLogo($useSvg = true): string {
-		$logo = $this->config->getAppValue('theming', 'logoMime', false);
+		$logo = $this->config->getAppValue('theming', 'logoMime', '');
 
 		// short cut to avoid setting up the filesystem just to check if the logo is there
 		//
@@ -309,13 +309,13 @@ class ThemingDefaults extends \OC_Defaults {
 		$variables['image-login-background'] = "url('".$this->imageManager->getImageUrl('background')."')";
 		$variables['image-login-plain'] = 'false';
 
-		if ($this->config->getAppValue('theming', 'color', null) !== null) {
+		if ($this->config->getAppValue('theming', 'color', '') !== '') {
 			$variables['color-primary'] = $this->getColorPrimary();
 			$variables['color-primary-text'] = $this->getTextColorPrimary();
 			$variables['color-primary-element'] = $this->util->elementColor($this->getColorPrimary());
 		}
 
-		if ($this->config->getAppValue('theming', 'backgroundMime', null) === 'backgroundColor') {
+		if ($this->config->getAppValue('theming', 'backgroundMime', '') === 'backgroundColor') {
 			$variables['image-login-plain'] = 'true';
 		}
 
diff --git a/apps/theming/lib/Util.php b/apps/theming/lib/Util.php
index 3addda9142200c70eae57ca7a60489d216face77..e757d100a1b15711aa9604a8b3aad1effe88140b 100644
--- a/apps/theming/lib/Util.php
+++ b/apps/theming/lib/Util.php
@@ -249,7 +249,7 @@ class Util {
 	}
 
 	public function isBackgroundThemed() {
-		$backgroundLogo = $this->config->getAppValue('theming', 'backgroundMime',false);
+		$backgroundLogo = $this->config->getAppValue('theming', 'backgroundMime', '');
 
 		$backgroundExists = true;
 		try {