diff --git a/app/src/main/java/com/wireguard/android/widget/fab/AddFloatingActionButton.java b/app/src/main/java/com/wireguard/android/widget/fab/AddFloatingActionButton.java
index d83050d9..e688a11a 100644
--- a/app/src/main/java/com/wireguard/android/widget/fab/AddFloatingActionButton.java
+++ b/app/src/main/java/com/wireguard/android/widget/fab/AddFloatingActionButton.java
@@ -16,6 +16,7 @@ import android.graphics.drawable.ShapeDrawable;
 import android.graphics.drawable.shapes.Shape;
 import android.support.annotation.ColorRes;
 import android.support.annotation.DrawableRes;
+import android.support.v4.content.ContextCompat;
 import android.util.AttributeSet;
 
 import com.wireguard.android.R;
@@ -38,7 +39,7 @@ public class AddFloatingActionButton extends FloatingActionButton {
     @Override
     void init(final Context context, final AttributeSet attributeSet) {
         final TypedArray attr = context.obtainStyledAttributes(attributeSet, R.styleable.AddFloatingActionButton, 0, 0);
-        mPlusColor = attr.getColor(R.styleable.AddFloatingActionButton_fab_plusIconColor, getColor(android.R.color.white));
+        mPlusColor = attr.getColor(R.styleable.AddFloatingActionButton_fab_plusIconColor, FloatingActionButton.getColorFromTheme(context, android.R.attr.colorBackground, android.R.color.white));
         attr.recycle();
 
         super.init(context, attributeSet);
@@ -59,7 +60,7 @@ public class AddFloatingActionButton extends FloatingActionButton {
     }
 
     public void setPlusColorResId(@ColorRes final int plusColor) {
-        setPlusColor(getColor(plusColor));
+        setPlusColor(ContextCompat.getColor(getContext(), plusColor));
     }
 
     @Override
diff --git a/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButton.java b/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButton.java
index 3395ae44..a8d937ef 100644
--- a/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButton.java
+++ b/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionButton.java
@@ -15,6 +15,8 @@ import android.graphics.drawable.*;
 import android.graphics.drawable.ShapeDrawable.ShaderFactory;
 import android.graphics.drawable.shapes.OvalShape;
 import android.support.annotation.*;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.app.AppCompatDelegate;
 import android.support.v7.widget.AppCompatImageButton;
 import android.util.AttributeSet;
 import android.widget.TextView;
@@ -56,15 +58,25 @@ public class FloatingActionButton extends AppCompatImageButton {
         init(context, attrs);
     }
 
+    //TODO(msf): make not terrible
+    public static int getColorFromTheme(final Context context, final int themeResource, @ColorRes final int fallback) {
+        TypedArray a = context.getTheme().obtainStyledAttributes(new int[]{themeResource});
+        try {
+            return a.getColor(0, ContextCompat.getColor(context, fallback));
+        } finally {
+            a.recycle();
+        }
+    }
+
     void init(final Context context, final AttributeSet attributeSet) {
         final TypedArray attr = context.obtainStyledAttributes(attributeSet,
                 R.styleable.FloatingActionButton, 0, 0);
         mColorNormal = attr.getColor(R.styleable.FloatingActionButton_fab_colorNormal,
-                getColor(R.color.color_accent));
+                getColorFromTheme(context, android.R.attr.colorAccent, android.R.color.holo_blue_bright));
         mColorPressed = attr.getColor(R.styleable.FloatingActionButton_fab_colorPressed,
-                getColor(R.color.color_accent_dark));
+                darkenOrLightenColor(mColorNormal)); //TODO(msf): use getColorForState on the accent color from theme instead to get darker states
         mColorDisabled = attr.getColor(R.styleable.FloatingActionButton_fab_colorDisabled,
-                getColor(android.R.color.darker_gray));
+                ContextCompat.getColor(context, android.R.color.darker_gray)); //TODO(msf): load from theme
         mSize = attr.getInt(R.styleable.FloatingActionButton_fab_size, SIZE_NORMAL);
         mIcon = attr.getResourceId(R.styleable.FloatingActionButton_fab_icon, 0);
         mTitle = attr.getString(R.styleable.FloatingActionButton_fab_title);
@@ -128,7 +140,7 @@ public class FloatingActionButton extends AppCompatImageButton {
     }
 
     public void setColorNormalResId(@ColorRes final int colorNormal) {
-        setColorNormal(getColor(colorNormal));
+        setColorNormal(ContextCompat.getColor(getContext(), colorNormal));
     }
 
     /**
@@ -146,7 +158,7 @@ public class FloatingActionButton extends AppCompatImageButton {
     }
 
     public void setColorPressedResId(@ColorRes final int colorPressed) {
-        setColorPressed(getColor(colorPressed));
+        setColorPressed(ContextCompat.getColor(getContext(), colorPressed));
     }
 
     /**
@@ -164,7 +176,7 @@ public class FloatingActionButton extends AppCompatImageButton {
     }
 
     public void setColorDisabledResId(@ColorRes final int colorDisabled) {
-        setColorDisabled(getColor(colorDisabled));
+        setColorDisabled(ContextCompat.getColor(getContext(), colorDisabled));
     }
 
     public boolean isStrokeVisible() {
@@ -178,10 +190,6 @@ public class FloatingActionButton extends AppCompatImageButton {
         }
     }
 
-    int getColor(@ColorRes final int id) {
-        return getResources().getColor(id);
-    }
-
     float getDimension(@DimenRes final int id) {
         return getResources().getDimension(id);
     }
@@ -251,7 +259,7 @@ public class FloatingActionButton extends AppCompatImageButton {
         if (mIconDrawable != null) {
             return mIconDrawable;
         } else if (mIcon != 0) {
-            return getResources().getDrawable(mIcon, null);
+            return ContextCompat.getDrawable(getContext(), mIcon);
         } else {
             return new ColorDrawable(Color.TRANSPARENT);
         }
@@ -311,7 +319,7 @@ public class FloatingActionButton extends AppCompatImageButton {
         return shapeDrawable;
     }
 
-    private int opacityToAlpha(final float opacity) {
+    private static int opacityToAlpha(final float opacity) {
         return (int) (255f * opacity);
     }
 
@@ -323,6 +331,19 @@ public class FloatingActionButton extends AppCompatImageButton {
         return adjustColorBrightness(argb, 1.1f);
     }
 
+    public static int darkenOrLightenColor(final int argb) {
+        final float[] hsv = new float[3];
+        Color.colorToHSV(argb, hsv);
+        final float factor;
+        if (hsv[2] < 0.2)
+            factor = 1.2f;
+        else
+            factor = 0.8f;
+
+        hsv[2] = Math.min(hsv[2] * factor, 1f);
+        return Color.HSVToColor(Color.alpha(argb), hsv);
+    }
+
     private static int adjustColorBrightness(final int argb, final float factor) {
         final float[] hsv = new float[3];
         Color.colorToHSV(argb, hsv);
diff --git a/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionsMenu.java b/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionsMenu.java
index 02546e13..2733e77e 100644
--- a/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionsMenu.java
+++ b/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionsMenu.java
@@ -14,6 +14,7 @@ import android.animation.TimeInterpolator;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
+import android.graphics.Color;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
@@ -22,6 +23,7 @@ import android.os.Parcelable;
 import android.support.annotation.ColorRes;
 import android.support.annotation.Keep;
 import android.support.annotation.NonNull;
+import android.support.v4.content.ContextCompat;
 import android.support.v7.widget.AppCompatTextView;
 import android.util.AttributeSet;
 import android.view.ContextThemeWrapper;
@@ -97,11 +99,11 @@ public class FloatingActionsMenu extends ViewGroup {
 
         final TypedArray attr = context.obtainStyledAttributes(attributeSet, R.styleable.FloatingActionsMenu, 0, 0);
         mAddButtonPlusColor = attr.getColor(R.styleable.FloatingActionsMenu_fab_addButtonPlusIconColor,
-                getColor(android.R.color.white));
+                FloatingActionButton.getColorFromTheme(context, android.R.attr.colorBackground, android.R.color.white));
         mAddButtonColorNormal = attr.getColor(R.styleable.FloatingActionsMenu_fab_addButtonColorNormal,
-                getColor(R.color.color_accent));
+                FloatingActionButton.getColorFromTheme(context, android.R.attr.colorAccent, android.R.color.holo_blue_bright));
         mAddButtonColorPressed = attr.getColor(R.styleable.FloatingActionsMenu_fab_addButtonColorPressed,
-                getColor(R.color.color_accent_dark));
+                FloatingActionButton.darkenOrLightenColor(mAddButtonColorNormal)); //TODO(msf): use getColorForState on the accent color from theme instead to get darker states
         mAddButtonSize = attr.getInt(R.styleable.FloatingActionsMenu_fab_addButtonSize, FloatingActionButton.SIZE_NORMAL);
         mAddButtonStrokeVisible = attr.getBoolean(R.styleable.FloatingActionsMenu_fab_addButtonStrokeVisible, true);
         mExpandDirection = attr.getInt(R.styleable.FloatingActionsMenu_fab_expandDirection, EXPAND_UP);
@@ -179,10 +181,6 @@ public class FloatingActionsMenu extends ViewGroup {
         mButtonsCount--;
     }
 
-    private int getColor(@ColorRes final int id) {
-        return getResources().getColor(id);
-    }
-
     @Override
     protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
         measureChildren(widthMeasureSpec, heightMeasureSpec);
diff --git a/app/src/main/res/drawable/fab_label_background.xml b/app/src/main/res/drawable/fab_label_background.xml
index c0315fd6..d626f442 100644
--- a/app/src/main/res/drawable/fab_label_background.xml
+++ b/app/src/main/res/drawable/fab_label_background.xml
@@ -6,5 +6,5 @@
         android:left="8dp"
         android:right="8dp"
         android:top="4dp" />
-    
+     
 
diff --git a/app/src/main/res/drawable/ic_action_delete.xml b/app/src/main/res/drawable/ic_action_delete.xml
index 617ba001..34f27019 100644
--- a/app/src/main/res/drawable/ic_action_delete.xml
+++ b/app/src/main/res/drawable/ic_action_delete.xml
@@ -4,6 +4,6 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     
 
diff --git a/app/src/main/res/drawable/ic_action_delete_black.xml b/app/src/main/res/drawable/ic_action_delete_black.xml
deleted file mode 100644
index 8fc53e7b..00000000
--- a/app/src/main/res/drawable/ic_action_delete_black.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-    
-
diff --git a/app/src/main/res/drawable/ic_action_edit.xml b/app/src/main/res/drawable/ic_action_edit.xml
index a0607f54..0a4d120e 100644
--- a/app/src/main/res/drawable/ic_action_edit.xml
+++ b/app/src/main/res/drawable/ic_action_edit.xml
@@ -4,6 +4,6 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     
 
diff --git a/app/src/main/res/drawable/ic_action_edit_inverse.xml b/app/src/main/res/drawable/ic_action_edit_inverse.xml
new file mode 100644
index 00000000..f1324ffb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_action_edit_inverse.xml
@@ -0,0 +1,9 @@
+
+    
+
diff --git a/app/src/main/res/drawable/ic_action_open.xml b/app/src/main/res/drawable/ic_action_open.xml
index 55cb1248..ea56ba01 100644
--- a/app/src/main/res/drawable/ic_action_open.xml
+++ b/app/src/main/res/drawable/ic_action_open.xml
@@ -4,6 +4,6 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     
 
diff --git a/app/src/main/res/drawable/ic_action_open_inverse.xml b/app/src/main/res/drawable/ic_action_open_inverse.xml
new file mode 100644
index 00000000..9836107c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_action_open_inverse.xml
@@ -0,0 +1,9 @@
+
+    
+
diff --git a/app/src/main/res/drawable/ic_action_save.xml b/app/src/main/res/drawable/ic_action_save.xml
index e572f978..690d119d 100644
--- a/app/src/main/res/drawable/ic_action_save.xml
+++ b/app/src/main/res/drawable/ic_action_save.xml
@@ -5,6 +5,6 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     
 
diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml
index 8025452c..59577a40 100644
--- a/app/src/main/res/drawable/ic_settings.xml
+++ b/app/src/main/res/drawable/ic_settings.xml
@@ -4,6 +4,6 @@
     android:viewportHeight="24"
     android:viewportWidth="24">
     
 
diff --git a/app/src/main/res/drawable/list_item_background.xml b/app/src/main/res/drawable/list_item_background.xml
index f005ac1d..28d33737 100644
--- a/app/src/main/res/drawable/list_item_background.xml
+++ b/app/src/main/res/drawable/list_item_background.xml
@@ -1,5 +1,5 @@
 
 
-     
-     
+      
+      
 
diff --git a/app/src/main/res/drawable/list_item_background_anim.xml b/app/src/main/res/drawable/list_item_background_anim.xml
index 2e962eb1..98bfded9 100644
--- a/app/src/main/res/drawable/list_item_background_anim.xml
+++ b/app/src/main/res/drawable/list_item_background_anim.xml
@@ -1,5 +1,5 @@
 
 
+    android:color="@color/list_item_ripple"> 
      
 
diff --git a/app/src/main/res/layout/tunnel_editor_peer.xml b/app/src/main/res/layout/tunnel_editor_peer.xml
index 40e16136..309ef7bb 100644
--- a/app/src/main/res/layout/tunnel_editor_peer.xml
+++ b/app/src/main/res/layout/tunnel_editor_peer.xml
@@ -51,7 +51,7 @@
                 android:background="@null"
                 android:contentDescription="@string/delete"
                 android:onClick="@{() -> collection.remove(item)}"
-                android:src="@drawable/ic_action_delete_black" />
+                android:src="@drawable/ic_action_delete" />
 
             
 
@@ -53,7 +53,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:onClick="@{fragment::onRequestImportConfig}"
-                app:fab_icon="@drawable/ic_action_open"
+                app:fab_icon="@drawable/ic_action_open_inverse"
                 app:fab_size="mini"
                 app:fab_title="@string/create_from_file" />
         
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 47a2d2b4..bb3b6e9b 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,5 +1,8 @@
 
 
+    
     #cfd8dc 
     #808e95 
+
+    
 
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 1fda6aa6..f5cd3814 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,7 +1,9 @@
 
 
 
-    
+