diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 8880280da8e08aba5770e8c696b195e77ff1d73a..2bfb3645e33219c29c0cac703e16aae6e7d87923 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -23,6 +23,7 @@ Added
 Fixed
 ~~~~~
 
+* Existing FaviconImg objects were not updated when a new Favicon image is uploaded via preferences
 * GroupManager.get_queryset() returned an incomplete QuerySet
 * OAuth was broken by a non-semver-adhering django-oauth-toolkit update
 * Too long texts in chips didn't result in a larger chip.
diff --git a/aleksis/core/apps.py b/aleksis/core/apps.py
index 520a5fc435fe5cd8ef55435d3c680f978250abb0..47df1dbda191a75339a20fc6e1d86c032835a216 100644
--- a/aleksis/core/apps.py
+++ b/aleksis/core/apps.py
@@ -97,15 +97,16 @@ class CoreConfig(AppConfig):
             if name in ("primary", "secondary"):
                 clean_scss()
             elif name in ("favicon", "pwa_icon"):
-                from favicon.models import Favicon  # noqa
+                from favicon.models import Favicon, FaviconImg  # noqa
 
                 is_favicon = name == "favicon"
 
                 if new_value:
-                    Favicon.on_site.update_or_create(
+                    favicon_id = Favicon.on_site.update_or_create(
                         title=name,
                         defaults={"isFavicon": is_favicon, "faviconImage": new_value},
-                    )
+                    )[0]
+                    FaviconImg.objects.filter(faviconFK=favicon_id).delete()
                 else:
                     Favicon.on_site.filter(title=name, isFavicon=is_favicon).delete()
                     if name in settings.DEFAULT_FAVICON_PATHS: