diff --git a/pount/apps/api/signals.py b/pount/apps/api/signals.py
index 89e965fabac812f762e9a0b73b0028cd6f860243..34588ce465cb462b06ca849a444e3071906bcec5 100644
--- a/pount/apps/api/signals.py
+++ b/pount/apps/api/signals.py
@@ -5,7 +5,7 @@ from django.dispatch import receiver
 from pount.apps.api import models
 from pount.apps.api.libs.referential import clear_cache_for_referential, delete_referential_in_mongodb
 from pount.apps.api.models.template import DELETED_SUFFIX
-from pount.apps.api.tasks import ensure_media_has_iiif
+from pount.apps.api.tasks import clean_iiif_media, ensure_media_has_iiif
 
 pre_soft_delete = django.dispatch.Signal()
 
@@ -58,3 +58,9 @@ def _create_project_group_and_permission(project, group_name, role_name):
 def create_iiif_task(sender, instance: models.item.MediaFile, **kwargs):
     if instance.component == "Image":
         ensure_media_has_iiif.delay(instance.id)
+
+
+@receiver(post_delete, sender=models.item.MediaFile)
+def remove_iiif_file(sender, instance: models.item.MediaFile, **kwargs):
+    if instance.component == "Image":
+        clean_iiif_media.delay(instance.filename)
diff --git a/pount/apps/api/tasks.py b/pount/apps/api/tasks.py
index 704605aab477e584c1a08d3e4146de82bbe91c38..a8e2806465eef2ae121a4353246a2a9cd8e0ee4c 100644
--- a/pount/apps/api/tasks.py
+++ b/pount/apps/api/tasks.py
@@ -33,6 +33,19 @@ def handle_update_item_metadata_on_template_save(template_id: UUID) -> None:
     update_items_using_template(template=template_id)
 
 
+@shared_task
+def clean_iiif_media(media_filename: str) -> None:
+    import os
+
+    from pount.apps.api.storage_backends import IIIFFileStorage
+
+    iiif_storage = IIIFFileStorage()
+    basename, _ = os.path.splitext(media_filename)
+    tiled_tif = f"{basename}.tiled.tif"
+    iiif_storage.delete(tiled_tif)
+    logger.debug(f"deleted {tiled_tif}")
+
+
 @shared_task
 def ensure_media_has_iiif(media_id: UUID) -> None:
     import os
@@ -93,5 +106,4 @@ def ensure_media_has_iiif(media_id: UUID) -> None:
             iiif_storage = IIIFFileStorage()
             with open(tiled_tif, "rb") as f:
                 iiif_storage.save(os.path.basename(tiled_tif), f)
-
-    logger.debug("MEDIA HAS IIIF")
+                logger.debug(f"saved {tiled_tif}")