diff --git a/bundles/org.eclipse.ui.images.renderer/src/main/java/org/eclipse/ui/images/renderer/GalleryMojo.java b/bundles/org.eclipse.ui.images.renderer/src/main/java/org/eclipse/ui/images/renderer/GalleryMojo.java
index 51a000d..09f706d 100644
--- a/bundles/org.eclipse.ui.images.renderer/src/main/java/org/eclipse/ui/images/renderer/GalleryMojo.java
+++ b/bundles/org.eclipse.ui.images.renderer/src/main/java/org/eclipse/ui/images/renderer/GalleryMojo.java
@@ -59,7 +59,7 @@
         
         File iconDirectoryRoot = new File("eclipse-png/");
 
-        Map<String, List<IconEntry>> galleryIconSets = new HashMap<String, List<IconEntry>>();
+        Map<String, List<IconEntry>> galleryIconSets = new HashMap<>();
         
         // Search each subdir in the root dir for svg icons
         for (File file : iconDirectoryRoot.listFiles()) {
@@ -67,7 +67,7 @@
                 continue;
             }
 
-            List<IconEntry> icons = new ArrayList<IconEntry>();
+            List<IconEntry> icons = new ArrayList<>();
             IconGatherer.gatherIcons(icons, "png", file, file, iconDirectoryRoot, false);
             
             galleryIconSets.put(file.getName(), icons);
@@ -102,7 +102,7 @@
      */
     public void renderGalleries(File galleryDir,  File gifCompare, File master, Map<String, List<IconEntry>> iconSets, int iconSize, int width) {
         // Render each icon set and a master list
-        List<IconEntry> masterList = new ArrayList<IconEntry>();
+        List<IconEntry> masterList = new ArrayList<>();
         
         for (Entry<String, List<IconEntry>> entry : iconSets.entrySet()) {
             String key = entry.getKey();
@@ -328,7 +328,7 @@
     private void renderMasterGallery(File root, File output, String fileEnding, int iconSize, int width,
             boolean dark) {
         int headerHeight = 30;
-        List<BufferedImage> images = new ArrayList<BufferedImage>();
+        List<BufferedImage> images = new ArrayList<>();
         for (File file : root.listFiles()) {
             if (file.getName().endsWith(iconSize + fileEnding)) {
                 BufferedImage set = null;
diff --git a/bundles/org.eclipse.ui.images.renderer/src/main/java/org/eclipse/ui/images/renderer/RenderMojo.java b/bundles/org.eclipse.ui.images.renderer/src/main/java/org/eclipse/ui/images/renderer/RenderMojo.java
index b0cffe0..7ced34e 100644
--- a/bundles/org.eclipse.ui.images.renderer/src/main/java/org/eclipse/ui/images/renderer/RenderMojo.java
+++ b/bundles/org.eclipse.ui.images.renderer/src/main/java/org/eclipse/ui/images/renderer/RenderMojo.java
@@ -292,7 +292,7 @@
 
         // A list of callables used to render icons on multiple threads
         // Each callable gets a set of icons to render
-        List<Callable<Object>> tasks = new ArrayList<Callable<Object>>(
+        List<Callable<Object>> tasks = new ArrayList<>(
                 this.threads);
 
         // Distribute the rasterization operations between multiple threads
@@ -467,7 +467,7 @@
     private void init(int threads, double scale) {
         this.threads = threads;
         this.outputScale = Math.max(1, scale);
-        icons = new ArrayList<IconEntry>();
+        icons = new ArrayList<>();
         execPool = Executors.newFixedThreadPool(threads);
         counter = new AtomicInteger();
     }
