diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java
index 6d09cec..8a64e76 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java
@@ -39,6 +39,7 @@
   interface DiffTableStyle extends CssResource {
     String fullscreen();
     String intralineBg();
+    String dark();
     String diff();
     String noIntraline();
     String activeLine();
@@ -68,7 +69,8 @@
   private SideBySide2 parent;
   private boolean headerVisible;
 
-  DiffTable(SideBySide2 parent, PatchSet.Id base, PatchSet.Id revision, String path) {
+  DiffTable(SideBySide2 parent, PatchSet.Id base, PatchSet.Id revision,
+      String path) {
     patchSetSelectBoxA = new PatchSetSelectBox2(
         parent, DisplaySide.A, revision.getParentKey(), base, path);
     patchSetSelectBoxB = new PatchSetSelectBox2(
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.ui.xml
index 3c2ced9..09eacaa 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.ui.xml
@@ -79,6 +79,14 @@
     .noIntraline .a .intralineBg { background-color: #faa; }
     .noIntraline .b .intralineBg { background-color: #9f9; }
 
+    .dark .a .diff { background-color: #400; }
+    .dark .b .diff { background-color: #444; }
+
+    .dark .a .intralineBg { background-color: #888; }
+    .dark .b .intralineBg { background-color: #bbb; }
+    .dark .noIntraline .a .intralineBg { background-color: #400; }
+    .dark .noIntraline .b .intralineBg { background-color: #444; }
+
     .patchSetNav {
       background-color: #f7f7f7;
       line-height: 1;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.java
index b4ac7f2..ed7c3b6 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PreferencesBox.java
@@ -302,6 +302,7 @@
   @UiHandler("theme")
   void onTheme(ChangeEvent e) {
     prefs.theme(Theme.valueOf(theme.getValue(theme.getSelectedIndex())));
+    view.setThemeStyles(prefs.theme().isDark());
     view.operation(new Runnable() {
       @Override
       public void run() {
@@ -397,5 +398,14 @@
     theme.addItem(
         Theme.NEAT.name().toLowerCase(),
         Theme.NEAT.name());
+    theme.addItem(
+        Theme.MIDNIGHT.name().toLowerCase(),
+        Theme.MIDNIGHT.name());
+    theme.addItem(
+        Theme.NIGHT.name().toLowerCase(),
+        Theme.NIGHT.name());
+    theme.addItem(
+        Theme.TWILIGHT.name().toLowerCase(),
+        Theme.TWILIGHT.name());
   }
 }
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
index 78ec0ac..364d94c 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
@@ -482,6 +482,7 @@
   }
 
   private void display(final CommentsCollections comments) {
+    setThemeStyles(prefs.theme().isDark());
     setShowTabs(prefs.showTabs());
     setShowIntraline(prefs.intralineDifference());
     if (prefs.showLineNumbers()) {
@@ -560,6 +561,14 @@
     return diff.intraline_status();
   }
 
+  void setThemeStyles(boolean d) {
+    if (d) {
+      diffTable.addStyleName(DiffTable.style.dark());
+    } else {
+      diffTable.removeStyleName(DiffTable.style.dark());
+    }
+  }
+
   void setShowTabs(boolean b) {
     if (b) {
       diffTable.addStyleName(DiffTable.style.showTabs());
diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountDiffPreference.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountDiffPreference.java
index 7d73574..a19ae08 100644
--- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountDiffPreference.java
+++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/AccountDiffPreference.java
@@ -56,10 +56,26 @@
   }
 
   public static enum Theme {
+    // Light themes
     DEFAULT,
     ECLIPSE,
     ELEGANT,
     NEAT,
+    // Dark themes
+    MIDNIGHT,
+    NIGHT,
+    TWILIGHT;
+
+    public boolean isDark() {
+      switch (this) {
+        case MIDNIGHT:
+        case NIGHT:
+        case TWILIGHT:
+          return true;
+        default:
+          return false;
+      }
+    }
   }
 
   public static AccountDiffPreference createDefault(Account.Id accountId) {
diff --git a/lib/codemirror/cm3.defs b/lib/codemirror/cm3.defs
index fad0034..9679b1b 100644
--- a/lib/codemirror/cm3.defs
+++ b/lib/codemirror/cm3.defs
@@ -6,7 +6,10 @@
 CM3_THEMES = [
   'theme/eclipse.css',
   'theme/elegant.css',
+  'theme/midnight.css',
   'theme/neat.css',
+  'theme/night.css',
+  'theme/twilight.css',
 ]
 
 CM3_JS = [
