Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java	(revision 32075)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java	(revision 32076)
@@ -2,13 +2,18 @@
 package org.openstreetmap.josm.plugins.mapillary.gui;
 
-import java.awt.FlowLayout;
+import java.awt.BorderLayout;
+import java.awt.Color;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.io.IOException;
-
+import java.io.InputStream;
+
+import javax.imageio.ImageIO;
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
 import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
@@ -28,4 +33,6 @@
 import org.openstreetmap.josm.plugins.mapillary.oauth.MapillaryUser;
 import org.openstreetmap.josm.plugins.mapillary.oauth.OAuthPortListener;
+import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryColorScheme;
+import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryColorScheme.MapillaryButton;
 import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryURL;
 import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
@@ -42,5 +49,5 @@
 
   private final JCheckBox reverseButtons = new JCheckBox(I18n.tr("Reverse buttons position when displaying images."));
-  private final JComboBox<String> downloadMode = new JComboBox<>(new String[]{
+  private final JComboBox<String> downloadModeComboBox = new JComboBox<>(new String[]{
       MapillaryDownloader.MODES.Automatic.toString(),
       MapillaryDownloader.MODES.Semiautomatic.toString(),
@@ -51,6 +58,6 @@
   private final JCheckBox moveTo = new JCheckBox(I18n.tr("Move to picture''s location with next/previous buttons"));
 
-  private final JButton loginButton = new JButton(new LoginAction(this));
-  private final JButton logoutButton = new JButton(new LogoutAction());
+  private final JButton loginButton = new MapillaryButton(I18n.tr("Login"), new LoginAction(this));
+  private final JButton logoutButton = new MapillaryButton(I18n.tr("Logout"), new LogoutAction());
   private final JLabel loginLabel = new JLabel();
   private final JPanel loginPanel = new JPanel();
@@ -63,14 +70,37 @@
   @Override
   public void addGui(PreferenceTabbedPane gui) {
-    JPanel panel = new JPanel();
-    this.reverseButtons.setSelected(Main.pref.getBoolean("mapillary.reverse-buttons"));
-    this.displayHour.setSelected(Main.pref.getBoolean("mapillary.display-hour", true));
-    this.format24.setSelected(Main.pref.getBoolean("mapillary.format-24"));
-    this.moveTo.setSelected(Main.pref.getBoolean("mapillary.move-to-picture", true));
-
-    panel.setLayout(new GridBagLayout());
-    panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-
-    panel.add(this.reverseButtons, GBC.eol());
+    JPanel container = new JPanel(new BorderLayout());
+
+    loginPanel.setLayout(new BoxLayout(loginPanel, BoxLayout.LINE_AXIS));
+    loginPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+    loginPanel.setBackground(MapillaryColorScheme.TOOLBAR_DARK_GREY);
+    JLabel brandImage = new JLabel();
+    try (InputStream is = MapillaryPreferenceSetting.class.getResourceAsStream("/images/mapillary-logo-white.png")) {
+      if (is != null) {
+        brandImage.setIcon(new ImageIcon(ImageIO.read(is)));
+      } else {
+        Main.warn("Could not load Mapillary brand image!");
+      }
+    } catch (IOException e) {
+      Main.warn("While reading Mapillary brand image, an IO-exception occured!");
+    }
+    loginPanel.add(brandImage, 0);
+    loginPanel.add(Box.createHorizontalGlue(), 1);
+    loginLabel.setForeground(Color.WHITE);
+    loginLabel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10));
+    loginPanel.add(loginLabel, 2);
+    loginPanel.add(loginButton, 3);
+    onLogout();
+    container.add(loginPanel, BorderLayout.NORTH);
+
+    JPanel mainPanel = new JPanel();
+    reverseButtons.setSelected(Main.pref.getBoolean("mapillary.reverse-buttons"));
+    displayHour.setSelected(Main.pref.getBoolean("mapillary.display-hour", true));
+    format24.setSelected(Main.pref.getBoolean("mapillary.format-24"));
+    moveTo.setSelected(Main.pref.getBoolean("mapillary.move-to-picture", true));
+
+    mainPanel.setLayout(new GridBagLayout());
+    mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
     // Sets the value of the ComboBox.
     String downloadMode = Main.pref.get("mapillary.download-mode");
@@ -78,23 +108,24 @@
         || MapillaryDownloader.MODES.Semiautomatic.toString().equals(downloadMode)
         || MapillaryDownloader.MODES.Manual.toString().equals(downloadMode)) {
-      this.downloadMode.setSelectedItem(Main.pref.get("mapillary.download-mode"));
+      downloadModeComboBox.setSelectedItem(Main.pref.get("mapillary.download-mode"));
     }
     JPanel downloadModePanel = new JPanel();
     downloadModePanel.add(new JLabel(I18n.tr("Download mode")));
-    downloadModePanel.add(this.downloadMode);
-    panel.add(downloadModePanel, GBC.eol());
-    panel.add(displayHour, GBC.eol());
-    panel.add(format24, GBC.eol());
-    panel.add(moveTo, GBC.eol());
-
-    loginPanel.setLayout(new FlowLayout(FlowLayout.LEADING));
-    loginPanel.add(loginButton, 0);
-    loginPanel.add(loginLabel, 1);
-    onLogout();
-    panel.add(loginPanel, GBC.eol());
-    panel.add(Box.createVerticalGlue(), GBC.eol().fill(GridBagConstraints.BOTH));
+    downloadModePanel.add(downloadModeComboBox);
+    mainPanel.add(downloadModePanel, GBC.eol());
+
+    mainPanel.add(reverseButtons, GBC.eol());
+    mainPanel.add(displayHour, GBC.eol());
+    mainPanel.add(format24, GBC.eol());
+    mainPanel.add(moveTo, GBC.eol());
+    MapillaryColorScheme.styleAsDefaultPanel(
+      mainPanel, downloadModePanel, reverseButtons, displayHour, format24, moveTo
+    );
+    mainPanel.add(Box.createVerticalGlue(), GBC.eol().fill(GridBagConstraints.BOTH));
+
+    container.add(mainPanel, BorderLayout.CENTER);
 
     synchronized (gui.getDisplayPreference().getTabPane()) {
-      gui.getDisplayPreference().addSubTab(this, "Mapillary", new JScrollPane(panel));
+      gui.getDisplayPreference().addSubTab(this, "Mapillary", new JScrollPane(container));
       gui.getDisplayPreference().getTabPane().setIconAt(gui.getDisplayPreference().getTabPane().getTabCount()-1, MapillaryPlugin.ICON12);
     }
@@ -118,8 +149,9 @@
   @Override
   public void onLogin(final String username) {
-    loginPanel.add(logoutButton, 1);
+    loginPanel.remove(loginButton);
+    loginPanel.add(logoutButton, 3);
     loginLabel.setText(I18n.tr("You are logged in as ''{0}''.", username));
-    loginButton.setText(I18n.tr("Re-Login"));
-    logoutButton.setText(I18n.tr("Logout"));
+    loginPanel.revalidate();
+    loginPanel.repaint();
   }
 
@@ -127,6 +159,8 @@
   public void onLogout() {
     loginPanel.remove(logoutButton);
+    loginPanel.add(loginButton, 3);
     loginLabel.setText(I18n.tr("You are currently not logged in."));
-    loginButton.setText(I18n.tr("Login"));
+    loginPanel.revalidate();
+    loginPanel.repaint();
   }
 
@@ -137,9 +171,9 @@
 
     MapillaryPlugin.setMenuEnabled(MapillaryPlugin.getDownloadViewMenu(), false);
-    if (this.downloadMode.getSelectedItem().equals(MapillaryDownloader.MODES.Automatic.toString()))
+    if (this.downloadModeComboBox.getSelectedItem().equals(MapillaryDownloader.MODES.Automatic.toString()))
       Main.pref.put("mapillary.download-mode", MapillaryDownloader.MODES.Automatic.toString());
-    if (this.downloadMode.getSelectedItem().equals(MapillaryDownloader.MODES.Semiautomatic.toString()))
+    if (this.downloadModeComboBox.getSelectedItem().equals(MapillaryDownloader.MODES.Semiautomatic.toString()))
       Main.pref.put("mapillary.download-mode", MapillaryDownloader.MODES.Semiautomatic.toString());
-    if (this.downloadMode.getSelectedItem().equals(MapillaryDownloader.MODES.Manual.toString())) {
+    if (this.downloadModeComboBox.getSelectedItem().equals(MapillaryDownloader.MODES.Manual.toString())) {
       Main.pref.put("mapillary.download-mode", MapillaryDownloader.MODES.Manual.toString());
       MapillaryPlugin.setMenuEnabled(MapillaryPlugin.getDownloadViewMenu(), true);
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryColorScheme.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryColorScheme.java	(revision 32076)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryColorScheme.java	(revision 32076)
@@ -0,0 +1,59 @@
+package org.openstreetmap.josm.plugins.mapillary.utils;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+
+import javax.swing.Action;
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+
+public class MapillaryColorScheme {
+  public static final Color MAPILLARY_GREEN = new Color(0x35af6d);
+  public static final Color TOOLBAR_DARK_GREY = new Color(0x242528);
+
+  private MapillaryColorScheme() {
+    // Private constructor to avoid instantiation
+  }
+
+  /**
+   * Styles the given components as default panels (currently only the background is set to white)
+   * @param components the components to style as default panels (e.g. checkboxes also, that's why
+   *   not only JPanels are accepted)
+   */
+  public static void styleAsDefaultPanel(JComponent... components) {
+    if (components != null && components.length >= 1) {
+      for (JComponent component : components) {
+        component.setBackground(Color.WHITE);
+      }
+    }
+  }
+
+  public final static class MapillaryButton extends JButton {
+    public MapillaryButton(final String text, final Action action) {
+      super(action);
+      setText(text);
+      setForeground(Color.WHITE);
+      setBorder(BorderFactory.createEmptyBorder(7,10,7,10));
+    }
+    @Override
+    protected void paintComponent(final Graphics g) {
+      if (getModel().isPressed()) {
+        g.setColor(MAPILLARY_GREEN.darker().darker());
+      } else if (getModel().isRollover()) {
+        g.setColor(MAPILLARY_GREEN.darker());
+      } else {
+        g.setColor(MAPILLARY_GREEN);
+      }
+      ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+      ((Graphics2D) g).fillRoundRect(0, 0, getWidth(), getHeight(), 3, 3);
+      super.paintComponent(g);
+    }
+    @Override
+    public boolean isContentAreaFilled() {
+      return false;
+    }
+  }
+}
