diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml
index 43977c4f69..2eba3e5526 100644
--- a/runelite-client/pom.xml
+++ b/runelite-client/pom.xml
@@ -68,6 +68,17 @@
gson
2.4
+
+ org.pushingpixels
+ substance
+ 7.0.01
+
+
+ org.pushingpixels
+ trident
+ 1.4
+ runtime
+
net.runelite
diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java
index 3de44e4d5c..10002bb12b 100644
--- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java
+++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java
@@ -24,7 +24,6 @@
*/
package net.runelite.client;
-import net.runelite.client.game.ItemManager;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.SubscriberExceptionContext;
import com.google.gson.Gson;
@@ -41,14 +40,19 @@ import java.io.InputStreamReader;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import javax.imageio.ImageIO;
+import javax.swing.JFrame;
+import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
import net.runelite.api.Client;
-import net.runelite.client.config.ConfigManager;
import net.runelite.client.account.AccountSession;
+import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen;
+import net.runelite.client.game.ItemManager;
import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.PluginManager;
import net.runelite.client.task.Scheduler;
@@ -56,6 +60,7 @@ import net.runelite.client.ui.ClientUI;
import net.runelite.client.ui.overlay.OverlayRenderer;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.http.api.account.AccountClient;
+import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -121,6 +126,18 @@ public class RuneLite
{
SwingUtilities.invokeAndWait(() ->
{
+ JFrame.setDefaultLookAndFeelDecorated(true);
+ JPopupMenu.setDefaultLightWeightPopupEnabled(false);
+
+ try
+ {
+ UIManager.setLookAndFeel(new SubstanceGraphiteLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException ex)
+ {
+ logger.warn("unable to set look and feel", ex);
+ }
+
gui = new ClientUI();
setupTrayIcon();
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java
index 8bd754b35f..a90cdbb5c6 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java
@@ -52,8 +52,8 @@ public class ConfigPanel extends PluginPanel
private static final Logger logger = LoggerFactory.getLogger(ConfigPanel.class);
private static final EmptyBorder BORDER_PADDING = new EmptyBorder(6, 6, 6, 6);
- private static final int TEXT_FIELD_WIDTH = 12;
- private static final int SPINNER_FIELD_WIDTH = 10;
+ private static final int TEXT_FIELD_WIDTH = 7;
+ private static final int SPINNER_FIELD_WIDTH = 6;
private final RuneLite runelite = RuneLite.getRunelite();
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java
index 4d05abf293..abdfef2813 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java
@@ -92,8 +92,7 @@ public class HiscorePanel extends PluginPanel
setSize(PANEL_WIDTH, PANEL_HEIGHT);
setVisible(true);
- input = new JTextField();
- input.setColumns(16);
+ input = new JTextField(11);
add(input);
lookupButton = new JButton("Lookup");
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/account/login_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/account/login_icon.png
index e14125e7e1..eed416cfd1 100644
Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/account/login_icon.png and b/runelite-client/src/main/resources/net/runelite/client/plugins/account/login_icon.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/account/logout_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/account/logout_icon.png
index 100ae801e6..8d8ee8c565 100644
Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/account/logout_icon.png and b/runelite-client/src/main/resources/net/runelite/client/plugins/account/logout_icon.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/config/config_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/config/config_icon.png
index 09626e93cf..1cdacec3eb 100644
Binary files a/runelite-client/src/main/resources/net/runelite/client/plugins/config/config_icon.png and b/runelite-client/src/main/resources/net/runelite/client/plugins/config/config_icon.png differ