diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/Resources.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/Resources.java
index da2ac9a..1a627db 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/Resources.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/Resources.java
@@ -21,4 +21,7 @@
 
   @Source("info.png")
   public ImageResource info();
+
+  @Source("delete.png")
+  public ImageResource delete();
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadStagePanel.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadStagePanel.java
index e58dfd3..4b27f74 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadStagePanel.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadStagePanel.java
@@ -20,6 +20,7 @@
 import com.google.gwt.event.dom.client.MouseOutHandler;
 import com.google.gwt.event.dom.client.MouseOverEvent;
 import com.google.gwt.event.dom.client.MouseOverHandler;
+import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.FlowPanel;
 import com.google.gwt.user.client.ui.HorizontalPanel;
@@ -107,6 +108,10 @@
     final String dataUrl;
     final String fileName;
 
+    private final Image img;
+    private final Image deleteIcon;
+    private Timer deleteIconHideTimer;
+
     ImagePreview(String project, final String dataUrl, String fileName) {
       this.project = project;
       this.dataUrl = dataUrl;
@@ -114,21 +119,33 @@
 
       setStyleName("imagare-stage-image-preview-panel");
 
-      Image img = new Image(dataUrl);
+      img = new Image(dataUrl);
       img.setStyleName("imagare-stage-image-preview");
       add(img);
 
+      deleteIcon = new Image(ImagarePlugin.RESOURCES.delete());
+      deleteIcon.setStyleName("imagare-delete-icon");
+      deleteIcon.setTitle("Delete Image");
+      deleteIcon.setVisible(false);
+      add(deleteIcon);
+
       img.addMouseOverHandler(new MouseOverHandler() {
         @Override
         public void onMouseOver(MouseOverEvent event) {
           if (!popup.isVisible()) {
-            Image img = new Image(dataUrl);
-            img.setStyleName("imagare-image-popup");
-            popup.add(img);
+            Image previewImg = new Image(dataUrl);
+            previewImg.setStyleName("imagare-image-popup");
+            popup.add(previewImg);
 
             popup.center();
             popup.setVisible(true);
           }
+
+          cancelHideDeleteIcon();
+          deleteIcon.getElement().setAttribute("style",
+              deleteIcon.getElement().getAttribute("style")
+                  + "position: absolute; top: " + img.getAbsoluteTop() + "px;");
+          deleteIcon.setVisible(true);
         }
       });
       img.addMouseOutHandler(new MouseOutHandler() {
@@ -136,6 +153,31 @@
         public void onMouseOut(MouseOutEvent event) {
           popup.setVisible(false);
           popup.clear();
+          hideDeleteIcon();
+        }
+      });
+
+      deleteIcon.addMouseOverHandler(new MouseOverHandler() {
+        @Override
+        public void onMouseOver(MouseOverEvent event) {
+          cancelHideDeleteIcon();
+        }
+      });
+
+      deleteIcon.addMouseOutHandler(new MouseOutHandler() {
+        @Override
+        public void onMouseOut(MouseOutEvent event) {
+          hideDeleteIcon();
+        }
+      });
+
+      deleteIcon.addClickHandler(new ClickHandler() {
+        @Override
+        public void onClick(ClickEvent event) {
+          stagedImagesPanel.remove(ImagePreview.this);
+          UploadStagePanel.this.setVisible(stagedImagesPanel.getWidgetCount() != 0);
+          popup.setVisible(false);
+          popup.clear();
         }
       });
 
@@ -148,5 +190,22 @@
       projectLabel.setStyleName("imagare-stage-label");
       add(projectLabel);
     }
+
+    private void hideDeleteIcon() {
+      deleteIconHideTimer = new Timer() {
+        @Override
+        public void run() {
+          deleteIcon.setVisible(false);
+        }
+      };
+      deleteIconHideTimer.schedule(20);
+    }
+
+    private void cancelHideDeleteIcon() {
+      if (deleteIconHideTimer != null) {
+        deleteIconHideTimer.cancel();
+        deleteIconHideTimer = null;
+      }
+    }
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/delete.png b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/delete.png
new file mode 100644
index 0000000..ea03150
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/delete.png
Binary files differ
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/public/imagare.css b/src/main/java/com/googlesource/gerrit/plugins/imagare/public/imagare.css
index a57d5f2..64ac11a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/public/imagare.css
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/public/imagare.css
@@ -84,3 +84,11 @@
   margin-top: 10px;
   margin-bottom: 10px;
 }
+
+.imagare-delete-icon {
+  z-index: 100;
+  width: 16px;
+  height: 16px;
+  background-color: #FFF !important;
+  border: 1px solid #B3B2B2;
+}
