diff --git a/defaults/defaults b/defaults/defaults
index 3fa8e662c3f3a8a9446b55a6cb5772e44f444d08..6fa5ed70ca1d94e9286abfaeee33ec97466804d5 100644
--- a/defaults/defaults
+++ b/defaults/defaults
@@ -34,6 +34,7 @@ shadow_delta_width=0
 shadow_delta_x=0
 shadow_delta_y=0
 show_app_icon=false
+show_dock_shadow=true
 show_frame_shadow=false
 show_popup_shadow=false
 snap_resist=false
diff --git a/mcs-plugin/wmtweaks_plugin.c b/mcs-plugin/wmtweaks_plugin.c
index 214301ad544027fa330f9cfd3616844227695a3c..2f6bfe63d28fb5d75de4b40ae8e5d3d269a223c4 100644
--- a/mcs-plugin/wmtweaks_plugin.c
+++ b/mcs-plugin/wmtweaks_plugin.c
@@ -60,6 +60,7 @@ static gboolean cycle_minimum = TRUE;
 static gboolean cycle_hidden = TRUE;
 static gboolean cycle_workspaces = FALSE;
 static gboolean focus_hint = TRUE;
+static gboolean show_dock_shadow = FALSE;
 static gboolean show_frame_shadow = FALSE;
 static gboolean show_popup_shadow = FALSE;
 static gboolean prevent_focus_stealing = FALSE;
@@ -99,6 +100,7 @@ static char *easy_click = "Alt";
     "Xfwm/RestoreOnMove"
     "Xfwm/ScrollWorkspaces"
     "Xfwm/ScrollWorkspaces"
+    "Xfwm/ShowDockShadow"
     "Xfwm/ShowFrameShadow"
     "Xfwm/ShowPopupShadow"
     "Xfwm/SnapResist"
@@ -575,6 +577,12 @@ create_dialog (McsPlugin * mcs_plugin)
         gtk_box_pack_start (GTK_BOX (compositor_options_vbox), check_button, FALSE, TRUE, 0);
         gtk_widget_show (check_button);
 
+        check_button =
+            create_gboolean_button (mcs_plugin, _("Show shadows under dock windows"),
+            "Xfwm/ShowDockShadow", &show_dock_shadow);
+        gtk_box_pack_start (GTK_BOX (compositor_options_vbox), check_button, FALSE, TRUE, 0);
+        gtk_widget_show (check_button);
+
         check_button =
             create_gboolean_button (mcs_plugin, _("Show shadows under regular windows"),
             "Xfwm/ShowFrameShadow", &show_frame_shadow);
@@ -744,6 +752,7 @@ xfwm4_create_channel (McsPlugin * mcs_plugin)
     init_gboolean_setting (mcs_plugin, "Xfwm/CycleHidden", &cycle_hidden);
     init_gboolean_setting (mcs_plugin, "Xfwm/CycleWorkspaces", &cycle_workspaces);
     init_gboolean_setting (mcs_plugin, "Xfwm/FocusHint", &focus_hint);
+    init_gboolean_setting (mcs_plugin, "Xfwm/ShowDockShadow", &show_dock_shadow);
     init_gboolean_setting (mcs_plugin, "Xfwm/ShowFrameShadow", &show_frame_shadow);
     init_gboolean_setting (mcs_plugin, "Xfwm/ShowPopupShadow", &show_popup_shadow);
     init_gboolean_setting (mcs_plugin, "Xfwm/PreventFocusStealing", &prevent_focus_stealing);
diff --git a/src/compositor.c b/src/compositor.c
index 7a50abff936572c36ffcfcb1c15183ae9983b4db..adb46a53af70701aac8133710b58e69007f4f438 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -69,7 +69,8 @@
                                          !FLAG_TEST (cw->c->flags, CLIENT_FLAG_FULLSCREEN))
 #define WIN_NO_SHADOW(cw)               ((cw->c) && \
                                            (FLAG_TEST (cw->c->flags, CLIENT_FLAG_FULLSCREEN | CLIENT_FLAG_BELOW) || \
-                                              (cw->c->type & (WINDOW_DOCK | WINDOW_DESKTOP))))
+                                            (cw->c->type & WINDOW_DESKTOP)))
+#define WIN_IS_DOCK(cw)                 (WIN_HAS_CLIENT(cw) && (cw->c->type & WINDOW_DOCK))
 #define WIN_IS_OVERRIDE(cw)             (cw->attr.override_redirect)
 #define WIN_IS_ARGB(cw)                 (cw->argb)
 #define WIN_IS_OPAQUE(cw)               (((cw->opacity == NET_WM_OPAQUE) && !WIN_IS_ARGB(cw)) || (cw->screen_info->overlays))
@@ -933,7 +934,13 @@ win_extents (CWindow *cw)
           (screen_info->params->show_frame_shadow &&
               !WIN_IS_OVERRIDE(cw) &&
               !WIN_NO_SHADOW(cw) &&
-              (WIN_HAS_FRAME(cw) || !(WIN_IS_ARGB(cw) || WIN_IS_SHAPED(cw))))))
+              !WIN_IS_DOCK(cw) &&
+              (WIN_HAS_FRAME(cw) || !(WIN_IS_ARGB(cw) || WIN_IS_SHAPED(cw)))) ||
+          (screen_info->params->show_dock_shadow &&
+              WIN_IS_DOCK(cw) &&
+              !WIN_NO_SHADOW(cw) &&
+              !WIN_IS_OVERRIDE(cw) &&
+              (!(WIN_IS_ARGB(cw) || WIN_IS_SHAPED(cw))))))
     {
         XRectangle sr;
 
diff --git a/src/settings.c b/src/settings.c
index 654803c9c050b35b0ebaa7f87ae2f49db5c2d16e..aa273ef5462c9ff18282268e799796159a7922f5 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -408,6 +408,11 @@ notify_cb (const char *name, const char *channel_name, McsAction action, McsSett
                     {
                         screen_info->params->placement_ratio = setting->data.v_int;
                     }
+                    else if (!strcmp (name, "Xfwm/ShowDockShadow"))
+                    {
+                        screen_info->params->show_dock_shadow = setting->data.v_int;
+                        reloadScreenSettings (screen_info, UPDATE_FRAME);
+                    }
                     else if (!strcmp (name, "Xfwm/ShowFrameShadow"))
                     {
                         screen_info->params->show_frame_shadow = setting->data.v_int;
@@ -795,6 +800,12 @@ loadMcsData (ScreenInfo *screen_info, Settings *rc)
             setIntValueFromInt ("popup_opacity", setting->data.v_int, rc);
             mcs_setting_free (setting);
         }
+        if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ShowDockShadow", CHANNEL5,
+                &setting) == MCS_SUCCESS)
+        {
+            setBooleanValueFromInt ("show_dock_shadow", setting->data.v_int, rc);
+            mcs_setting_free (setting);
+        }
         if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ShowFrameShadow", CHANNEL5,
                 &setting) == MCS_SUCCESS)
         {
@@ -1330,6 +1341,7 @@ loadSettings (ScreenInfo *screen_info)
         {"shadow_delta_x", NULL, TRUE},
         {"shadow_delta_y", NULL, TRUE},
         {"show_app_icon", NULL, TRUE},
+        {"show_dock_shadow", NULL, TRUE},
         {"show_frame_shadow", NULL, TRUE},
         {"show_popup_shadow", NULL, TRUE},
         {"snap_resist", NULL, TRUE},
@@ -1473,6 +1485,8 @@ loadSettings (ScreenInfo *screen_info)
         abs (TOINT (getValue ("placement_ratio", rc)));
     screen_info->params->show_app_icon =
         !g_ascii_strcasecmp ("true", getValue ("show_app_icon", rc));
+    screen_info->params->show_dock_shadow =
+        !g_ascii_strcasecmp ("true", getValue ("show_dock_shadow", rc));
     screen_info->params->show_frame_shadow =
         !g_ascii_strcasecmp ("true", getValue ("show_frame_shadow", rc));
     screen_info->params->show_popup_shadow =
diff --git a/src/settings.h b/src/settings.h
index fbfb67dc5d623bef229bb32aa4fd8b891ed8ac3c..5ea15296a2b1728db3686da8d1eed8d76c45298e 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -210,6 +210,7 @@ struct _XfwmParams
     gboolean raise_with_any_button;
     gboolean scroll_workspaces;
     gboolean show_app_icon;
+    gboolean show_dock_shadow;
     gboolean show_frame_shadow;
     gboolean show_popup_shadow;
     gboolean snap_to_border;
diff --git a/themes/default/themerc b/themes/default/themerc
index ad6ed398cd0da3e8beef8e6c6014d63a84063429..054ee6d9af954c064db111215ad642f6e9686625 100644
--- a/themes/default/themerc
+++ b/themes/default/themerc
@@ -3,10 +3,10 @@ button_offset=-1
 button_spacing=0
 full_width_title=false
 maximized_offset=0
-shadow_delta_height=-2
-shadow_delta_width=-2
-shadow_delta_x=-2
-shadow_delta_y=-2
+shadow_delta_height=2
+shadow_delta_width=0
+shadow_delta_x=0
+shadow_delta_y=0
 show_app_icon=true
 title_horizontal_offset=1
 title_shadow_active=frame
diff --git a/themes/largeprint/themerc b/themes/largeprint/themerc
index ad6ed398cd0da3e8beef8e6c6014d63a84063429..9cd678d75763dc8be4a6d77f72ecc24dca087357 100644
--- a/themes/largeprint/themerc
+++ b/themes/largeprint/themerc
@@ -3,10 +3,10 @@ button_offset=-1
 button_spacing=0
 full_width_title=false
 maximized_offset=0
-shadow_delta_height=-2
-shadow_delta_width=-2
-shadow_delta_x=-2
-shadow_delta_y=-2
+shadow_delta_height=4
+shadow_delta_width=1
+shadow_delta_x=1
+shadow_delta_y=1
 show_app_icon=true
 title_horizontal_offset=1
 title_shadow_active=frame