diff --git a/bundles/org.eclipse.rap.gef/src/org/eclipse/gef/internal/ui/palette/editparts/DetailedLabelFigure.java b/bundles/org.eclipse.rap.gef/src/org/eclipse/gef/internal/ui/palette/editparts/DetailedLabelFigure.java
index 692ca2e..2ca2ef5 100644
--- a/bundles/org.eclipse.rap.gef/src/org/eclipse/gef/internal/ui/palette/editparts/DetailedLabelFigure.java
+++ b/bundles/org.eclipse.rap.gef/src/org/eclipse/gef/internal/ui/palette/editparts/DetailedLabelFigure.java
@@ -45,7 +45,7 @@
  */
 public class DetailedLabelFigure extends Figure {
 
-	private static final FontCache FONTCACHE = new FontCache();
+	private final FontCache FONTCACHE = new FontCache();
 	private static final Border PAGE_BORDER = new MarginBorder(0, 1, 0, 1);
 
 	private SelectableImageFigure image;
@@ -263,9 +263,9 @@
 		protected void useShadedImage() {
 			disposeShadedImage();
 			if (super.getImage() != null) {
-				ImageData data = ImageUtilities
-						.createShadedImage(super.getImage(),
-								ColorConstants.menuBackgroundSelected());
+				ImageData data = ImageUtilities.createShadedImage(
+						super.getImage(),
+						ColorConstants.menuBackgroundSelected());
 				// UNSUPPORTED - Create image using RAP supported constructor
 				// shadedImage = new Image(null, data,
 				// data.getTransparencyMask());
diff --git a/bundles/org.eclipse.rap.gef/src/org/eclipse/gef/ui/palette/editparts/PaletteEditPart.java b/bundles/org.eclipse.rap.gef/src/org/eclipse/gef/ui/palette/editparts/PaletteEditPart.java
index 75d6e2e..37569e2 100644
--- a/bundles/org.eclipse.rap.gef/src/org/eclipse/gef/ui/palette/editparts/PaletteEditPart.java
+++ b/bundles/org.eclipse.rap.gef/src/org/eclipse/gef/ui/palette/editparts/PaletteEditPart.java
@@ -56,7 +56,7 @@
 	 */
 	public static final String XML_NAME = "entry"; //$NON-NLS-1$
 	private static final Border TOOLTIP_BORDER = new MarginBorder(0, 2, 1, 0);
-	private static ImageCache globalImageCache;
+	private ImageCache globalImageCache;
 	private AccessibleEditPart acc;
 	private PropertyChangeListener childListener = new PropertyChangeListener() {
 		public void propertyChange(PropertyChangeEvent evt) {
@@ -191,7 +191,7 @@
 	 * 
 	 * @return the image cache.
 	 */
-	protected static ImageCache getImageCache() {
+	protected ImageCache getImageCache() {
 		ImageCache cache = globalImageCache;
 		if (cache == null) {
 			globalImageCache = cache = new ImageCache();
@@ -298,10 +298,9 @@
 				text = entry.getLabel();
 		} else {
 			if (needName)
-				text = entry.getLabel()
-						+ " " //$NON-NLS-1$
-						+ PaletteMessages.get().NAME_DESCRIPTION_SEPARATOR
-						+ " " + desc; //$NON-NLS-1$
+				text = entry.getLabel() + " " //$NON-NLS-1$
+						+ PaletteMessages.get().NAME_DESCRIPTION_SEPARATOR + " " //$NON-NLS-1$
+						+ desc;
 			else
 				text = desc;
 		}
@@ -371,8 +370,8 @@
 	public void saveState(IMemento memento) {
 		Iterator iter = getChildren().iterator();
 		while (iter.hasNext())
-			((PaletteEditPart) iter.next()).saveState(memento
-					.createChild(XML_NAME));
+			((PaletteEditPart) iter.next())
+					.saveState(memento.createChild(XML_NAME));
 	}
 
 	/**
