diff --git a/src/main/java/de/deadlocker8/budgetmaster/images/ImageService.java b/src/main/java/de/deadlocker8/budgetmaster/images/ImageService.java
index 82d368596022351671dc18093dbe2164bbd73740..9dcaefe5e9d7cc0a3a6e341c9cf7997c4b8e550d 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/images/ImageService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/images/ImageService.java
@@ -34,6 +34,7 @@ public class ImageService implements Resetable
 	}
 
 	@Override
+	@Transactional
 	public void deleteAll()
 	{
 		final List<Image> images = imageRepository.findAll();
@@ -53,6 +54,8 @@ public class ImageService implements Resetable
 		{
 			account.setIcon(null);
 		}
+
+		getRepository().delete(image);
 	}
 
 	@Override
diff --git a/src/main/java/de/deadlocker8/budgetmaster/images/MediaController.java b/src/main/java/de/deadlocker8/budgetmaster/images/MediaController.java
index e460496ca93b26df86e3008ade9542085b1c8001..c37e305e7592ee3efe2303bf5f45218456acfa13 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/images/MediaController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/images/MediaController.java
@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.Optional;
 
 @Controller
 @RequestMapping(Mappings.MEDIA)
@@ -61,4 +62,26 @@ public class MediaController extends BaseController
 
 		return data.toString();
 	}
+
+	@GetMapping("/deleteImage/{ID}")
+	@ResponseBody
+	public String deleteImage(@PathVariable("ID") Integer ID)
+	{
+		boolean success = false;
+		String localizedMessage = Localization.getString("delete.image.error.not.existing", ID);
+
+		Optional<Image> imageOptional = imageService.getRepository().findById(ID);
+		if(imageOptional.isPresent())
+		{
+			success = true;
+			localizedMessage = Localization.getString("delete.image.success");
+			imageService.deleteImage(imageOptional.get());
+		}
+
+		final JsonObject data = new JsonObject();
+		data.addProperty("isDeleteSuccessful", success);
+		data.addProperty("localizedMessage", localizedMessage);
+
+		return data.toString();
+	}
 }
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index 8a5561f255d9892ddb13e3f3f35b00d57a0503b9..bab198ae0dbed3af29135acdcbf08dbcfb733307 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -142,6 +142,8 @@ notification.settings.database.import.success=Import erfolgreich: {0} Konten, {1
 upload.image.success=Erfolgreich hochgeladen
 upload.image.error=Fehler: {0}
 upload.image.error.invalid.extension=Die Dateiendung "{0}" is nicht zugelassen für das Hochladen von Bildern
+delete.image.success=Erfolgreich gelöscht
+delete.image.error.not.existing=Fehler: Bild mit ID {0} existiert nicht
 
 # WARNING
 warning.text.account.delete=Das Konto "{0}" kann nicht gelöscht werden, da mindestens ein Konto existieren muss. Um dieses Konto zu löschen musst du zuerst ein neues anlegen.
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index f5c0f58a5db27c7b8c9a9f57a379191e60349273..da750082e6ecb5a6f39edf8216d72975bb8297de 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -142,6 +142,8 @@ notification.settings.database.import.success=Import successful: {0} accounts, {
 upload.image.success=Upload successful
 upload.image.error=Error: {0}
 upload.image.error.invalid.extension=File extension "{0}" is not allowed for image upload
+delete.image.success=Successfully deleted
+delete.image.error.not.existing=Error: Image with ID {0} does not exist
 
 # WARNING
 warning.text.account.delete=The account "{0}" could not be deleted, because at least one account must exist at all time. You have to create a new account in order to delete this one.
diff --git a/src/main/resources/static/js/accounts.js b/src/main/resources/static/js/accounts.js
index 7f6ad7e16dfff33fad0630407a47b1cea5801656..807d7345f420a40bf4753c2ebc24dafd829bc9a0 100644
--- a/src/main/resources/static/js/accounts.js
+++ b/src/main/resources/static/js/accounts.js
@@ -84,6 +84,11 @@ function getAvailableImages(callback)
                 selectIcon(this);
             });
 
+            $('.account-icon-option-delete').click(function()
+            {
+                deleteImage(this);
+            });
+
             callback();
         }
     });
@@ -135,4 +140,34 @@ function uploadImage()
             });
         }
     });
+}
+
+function deleteImage(item)
+{
+    $.ajax({
+        type: 'GET',
+        url: $(item).attr('data-url'),
+        data: {},
+        success: function(response)
+        {
+            let parsedData = JSON.parse(response);
+            let isUploadSuccessful = parsedData['isDeleteSuccessful']
+            M.toast({
+                html: parsedData['localizedMessage'],
+                classes: isUploadSuccessful ? 'green' : 'red'
+            });
+
+            getAvailableImages(function()
+            {
+            });
+        },
+        error: function(response)
+        {
+            let parsedData = JSON.parse(response);
+            M.toast({
+                html: parsedData['localizedMessage'],
+                classes: 'red'
+            });
+        }
+    });
 }
\ No newline at end of file
diff --git a/src/main/resources/templates/accounts/availableImages.ftl b/src/main/resources/templates/accounts/availableImages.ftl
index 504abbfbcb8a0abf278ed4ceb5a1434d74ab8fb8..edb3539ecee633aca6a98698a4ed16eeef9444dd 100644
--- a/src/main/resources/templates/accounts/availableImages.ftl
+++ b/src/main/resources/templates/accounts/availableImages.ftl
@@ -1,3 +1,6 @@
+<#import "/spring.ftl" as s>
+<#import "../helpers/header.ftl" as header>
+
 <#list availableImages as image>
     <@imageOption image 'account-icon'/>
 </#list>
@@ -7,5 +10,6 @@
         <div class="${classPrefix}-option">
             <img src="${image.getBase64EncodedImage()}" class="${classPrefix}-preview" data-image-id="${image.getID()}"/>
         </div>
+        <@header.buttonFlat url="/media/deleteImage/" + image.getID() icon='delete' localizationKey='' classes='no-padding text-default ' + classPrefix + '-option-delete' isDataUrl=true/>
     </div>
 </#macro>
\ No newline at end of file