diff --git a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/figures/GFImageFigure.java b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/figures/GFImageFigure.java
index 045496e..b0baafd 100644
--- a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/figures/GFImageFigure.java
+++ b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/figures/GFImageFigure.java
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * <copyright>
  *
- * Copyright (c) 2005, 2012 SAP AG.
+ * Copyright (c) 2005, 2015 SAP AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
  * Contributors:
  *    SAP AG - initial API, implementation and documentation
  *    Veit Hoffmann (mwenz) - Bug 342869 - Image doesn't scale the contained SWT Image on resize
+ *    mwenz - Bug 464857 - Images created by GFImageFigure are not destroyed
  *
  * </copyright>
  *
@@ -32,6 +33,7 @@
 	private GraphicsAlgorithm graphicsAlgorithm;
 
 	private Image fillImage = null;
+	private boolean isSelfCreatedImage = false;
 
 	public GFImageFigure(GraphicsAlgorithm graphicsAlgorithm) {
 		this.graphicsAlgorithm = graphicsAlgorithm;
@@ -39,6 +41,7 @@
 
 	@Override
 	public void setImage(Image image) {
+		disposeSelfCreatedImage();
 		if (image != null
 				&& graphicsAlgorithm instanceof org.eclipse.graphiti.mm.algorithms.Image) {
 			org.eclipse.graphiti.mm.algorithms.Image imageGA = (org.eclipse.graphiti.mm.algorithms.Image) graphicsAlgorithm;
@@ -75,25 +78,30 @@
 				// create scaled image
 				double d = imageWidth * scalefactorX;
 				double e = imageHeight * scalefactorY;
-				Image oldFillImage = fillImage;
-				fillImage = new Image(Display.getCurrent(),
-						originalImageData.scaledTo((int) d, (int) e));
-				super.setImage(fillImage);
-				// keep track of the old fill image on resize and dispose it to
-				// avoid memory leaks
 				// We don't change the image in
 				// GraphitiUIPlugin.getDefault().getImageRegistry() because
 				// scaling down makes image quality bad
-				if (oldFillImage != null && !oldFillImage.isDisposed()) {
-					oldFillImage.dispose();
-				}
+				fillImage = new Image(Display.getCurrent(),
+						originalImageData.scaledTo((int) d, (int) e));
+				isSelfCreatedImage = true;
 			} else {
-				super.setImage(image);
+				fillImage = image;
 			}
 		} else {
-			super.setImage(image);
+			fillImage = image;
 		}
+		super.setImage(fillImage);
+	}
 
+	private void disposeSelfCreatedImage() {
+		// keep track of any self-created fill image and dispose it to avoid
+		// resource leaks
+		if (isSelfCreatedImage) {
+			if (fillImage != null && !fillImage.isDisposed()) {
+				fillImage.dispose();
+			}
+			isSelfCreatedImage = false;
+		}
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/parts/PictogramElementDelegate.java b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/parts/PictogramElementDelegate.java
index 5a77bf7..9a7a8f4 100644
--- a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/parts/PictogramElementDelegate.java
+++ b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/internal/parts/PictogramElementDelegate.java
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * <copyright>
  *
- * Copyright (c) 2005, 2014 SAP AG.
+ * Copyright (c) 2005, 2015 SAP AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -25,6 +25,7 @@
  *    pjpaulin - Bug 352120 - Now uses IDiagramContainerUI interface
  *    mwenz - Bug 412858 - canUpdate is not consulted before calling updateNeeded during startup
  *    mwenz - Bug 434458 - Connections don't support Color decorators
+ *    mwenz - Bug 464857 - Images created by GFImageFigure are not destroyed
  *
  * </copyright>
  *
@@ -231,6 +232,10 @@
 
 		for (IFigure figure : elementFigureHash.values()) {
 			removeDecorators(figure);
+			if (figure instanceof ImageFigure) {
+				// Trigger disposal of currently displayed image (bug 464857)
+				((ImageFigure) figure).setImage(null);
+			}
 		}
 
 		disposeFonts();
