diff --git a/vote/forms.py b/vote/forms.py
index 32afef0c25c3664d9ead03ba8ec76d5554ffe343..0429c9159125fc7eaf57ed6b2f2c68aa930c7c24 100644
--- a/vote/forms.py
+++ b/vote/forms.py
@@ -42,7 +42,7 @@ class AccessCodeAuthenticationForm(forms.Form):
         return self.user_cache
 
 
-class CustomClearableFileInput(forms.ClearableFileInput):
+class AvatarFileInput(forms.ClearableFileInput):
     template_name = 'vote/image_input.html'
 
 
@@ -54,7 +54,7 @@ class ApplicationUploadForm(forms.ModelForm):
         self.voter = Voter.objects.get(voter_id=request.user.voter_id)
         self.request = request
 
-        self.fields['avatar'].widget = CustomClearableFileInput()
+        self.fields['avatar'].widget = AvatarFileInput()
         self.fields['first_name'].initial = self.voter.first_name
         self.fields['last_name'].initial = self.voter.last_name
         self.fields['email'].initial = self.voter.email
diff --git a/vote/models.py b/vote/models.py
index cb5769db42f09e1144eb7e83c67410f367b1b5f1..d17c313fa67dd8771c41c1613916dfd96114ddb0 100644
--- a/vote/models.py
+++ b/vote/models.py
@@ -297,6 +297,12 @@ class Application(models.Model):
     first_name = models.CharField(max_length=256)
     email = models.EmailField()
 
+    _old_avatar = None
+
+    def __init__(self, *args, **kwargs):
+        super(Application, self).__init__(*args, **kwargs)
+        self._old_avatar = self.avatar
+
     def __str__(self):
         return f'Application of {self.get_display_name()} for {self.voter.election}'
 
@@ -304,7 +310,10 @@ class Application(models.Model):
         return f'{self.first_name} {self.last_name} ({self.voter.room})'
 
     def save(self, *args, **kwargs):
-        if self.avatar:
+        if self.avatar and self._old_avatar != self.avatar:
+            if self._old_avatar and os.path.isfile(self._old_avatar.path):
+                os.remove(self._old_avatar.path)
+
             max_width = 100
             max_height = 100
             img = Image.open(self.avatar)
@@ -329,6 +338,7 @@ class Application(models.Model):
             img.save(output, format='JPEG', quality=95)
             output.seek(0)
             self.avatar = InMemoryUploadedFile(output, 'ImageField', "%s.jpg" % self.avatar.name.split('.')[0], 'image/jpeg', sys.getsizeof(output), None)
+            self._old_avatar = self.avatar
 
         super(Application, self).save(*args, **kwargs)