diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 86ecc190a6f58f77488b83939bd353b19578c172..d06f45d8567d1fd800d2b9d485c2d2980d00b336 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -24,6 +24,8 @@ Removed
 ~~~~~~~
 
 * Remove old generated AlekSIS icons
+* Imprint is now called "Imprint" and not "Impress".
+* Logo files weren't uploaded to public namespace.
 
 `2.3.1`_ – 2021-12-17
 ---------------------
diff --git a/aleksis/core/mixins.py b/aleksis/core/mixins.py
index 3232aac4deb912dfb65f28d69831767bf2fd8445..c6cee9a8c6bbefed3439eef156b685f5484e4a13 100644
--- a/aleksis/core/mixins.py
+++ b/aleksis/core/mixins.py
@@ -1,5 +1,6 @@
 # flake8: noqa: DJ12
 
+import os
 from datetime import datetime
 from typing import Any, Callable, List, Optional, Union
 
@@ -21,6 +22,8 @@ from django.views.generic import CreateView, UpdateView
 from django.views.generic.edit import DeleteView, ModelFormMixin
 
 import reversion
+from dynamic_preferences.settings import preferences_settings
+from dynamic_preferences.types import FilePreference
 from guardian.admin import GuardedModelAdmin
 from guardian.core import ObjectPermissionChecker
 from jsonstore.fields import IntegerField, JSONFieldMixin
@@ -529,3 +532,14 @@ class SchoolTermRelatedExtensibleForm(ExtensibleForm):
             kwargs["initial"] = {"school_term": SchoolTerm.current}
 
         super().__init__(*args, **kwargs)
+
+
+class PublicFilePreferenceMixin(FilePreference):
+    """Uploads a file to the public namespace."""
+
+    upload_path = "public"
+
+    def get_upload_path(self):
+        return os.path.join(
+            self.upload_path, preferences_settings.FILE_PREFERENCE_UPLOAD_DIR, self.identifier()
+        )
diff --git a/aleksis/core/preferences.py b/aleksis/core/preferences.py
index d0de22fe03cc044fa5722982dfcc7faf86a4503c..0110d9aa84d3848912bf411a00063d86609f6c1d 100644
--- a/aleksis/core/preferences.py
+++ b/aleksis/core/preferences.py
@@ -16,6 +16,7 @@ from dynamic_preferences.types import (
 )
 from oauth2_provider.models import AbstractApplication
 
+from .mixins import PublicFilePreferenceMixin
 from .models import Group, Person
 from .registries import person_preferences_registry, site_preferences_registry
 from .util.notifications import get_notification_choices_lazy
@@ -78,7 +79,7 @@ class ColourSecondary(StringPreference):
 
 
 @site_preferences_registry.register
-class Logo(FilePreference):
+class Logo(PublicFilePreferenceMixin, FilePreference):
     """Logo of your AlekSIS instance."""
 
     section = theme
@@ -88,7 +89,7 @@ class Logo(FilePreference):
 
 
 @site_preferences_registry.register
-class Favicon(FilePreference):
+class Favicon(PublicFilePreferenceMixin, FilePreference):
     """Favicon of your AlekSIS instance."""
 
     section = theme
@@ -98,7 +99,7 @@ class Favicon(FilePreference):
 
 
 @site_preferences_registry.register
-class PWAIcon(FilePreference):
+class PWAIcon(PublicFilePreferenceMixin, FilePreference):
     """PWA-Icon of your AlekSIS instance."""
 
     section = theme
diff --git a/aleksis/core/templates/core/base.html b/aleksis/core/templates/core/base.html
index 6c47c2a3bd0da7ba02e4c8aa96e7a5787cd933c0..06aebc4533369e9b7af39051dcb80713193f50d5 100644
--- a/aleksis/core/templates/core/base.html
+++ b/aleksis/core/templates/core/base.html
@@ -180,7 +180,7 @@
         <span id="doit"></span>
         {% if request.site.preferences.footer__imprint_url %}
           <a class="blue-text text-lighten-4" href="{{ request.site.preferences.footer__imprint_url }}">
-            {% trans "Impress" %}
+            {% trans "Imprint" %}
           </a>
         {% endif %}
         {% if request.site.preferences.footer__privacy_url and request.site.preferences.footer__imprint_url %}