diff --git a/Browser/Notification/FormNotificationMain.cs b/Browser/Notification/FormNotificationMain.cs
index c92c7adf..62db2de1 100644
--- a/Browser/Notification/FormNotificationMain.cs
+++ b/Browser/Notification/FormNotificationMain.cs
@@ -25,6 +25,8 @@ abstract partial class FormNotificationMain : FormNotificationBase{
         private IntPtr mouseHook;
         private bool blockXButtonUp;
 
+        private int currentOpacity;
+
         private bool? prevDisplayTimer;
         private int? prevFontSize;
 
@@ -81,6 +83,15 @@ protected FormNotificationMain(FormBrowser owner, PluginManager pluginManager, b
             Disposed += (sender, args) => StopMouseHook(true);
         }
 
+        // helpers
+
+        private void SetOpacity(int opacity){
+            if (currentOpacity != opacity){
+                currentOpacity = opacity;
+                Opacity = opacity / 100.0;
+            }
+        }
+
         // mouse wheel hook
 
         private void StartMouseHook(){
@@ -170,9 +181,11 @@ private void timerHideProgress_Tick(object sender, EventArgs e){
 
             if (isCursorInside){
                 StartMouseHook();
+                SetOpacity(100);
             }
             else{
                 StopMouseHook(false);
+                SetOpacity(Config.NotificationWindowOpacity);
             }
 
             if (isCursorInside || FreezeTimer || ContextMenuOpen){
@@ -264,7 +277,8 @@ protected void PrepareAndDisplayWindow(){
                 RequiresResize = false;
                 SetNotificationSize(BaseClientWidth, BaseClientHeight);
             }
-            
+
+            SetOpacity(IsCursorOverBrowser ? 100 : Config.NotificationWindowOpacity);
             MoveToVisibleLocation();
         }
 
diff --git a/Configuration/UserConfig.cs b/Configuration/UserConfig.cs
index 699dcf3d..f4f6be0d 100644
--- a/Configuration/UserConfig.cs
+++ b/Configuration/UserConfig.cs
@@ -65,6 +65,7 @@ sealed class UserConfig : BaseConfig{
         public Point CustomNotificationPosition                  { get; set; } = ControlExtensions.InvisibleLocation;
         public int NotificationDisplay                           { get; set; } = 0;
         public int NotificationEdgeDistance                      { get; set; } = 8;
+        public int NotificationWindowOpacity                     { get; set; } = 100;
 
         public DesktopNotification.Size NotificationSize { get; set; } = DesktopNotification.Size.Auto;
         public Size CustomNotificationSize               { get; set; } = Size.Empty;
diff --git a/Dialogs/Settings/TabSettingsNotifications.Designer.cs b/Dialogs/Settings/TabSettingsNotifications.Designer.cs
index 1f67317e..a0f2a2e7 100644
--- a/Dialogs/Settings/TabSettingsNotifications.Designer.cs
+++ b/Dialogs/Settings/TabSettingsNotifications.Designer.cs
@@ -65,6 +65,10 @@ private void InitializeComponent() {
             this.panelSize = new System.Windows.Forms.Panel();
             this.durationUpdateTimer = new System.Windows.Forms.Timer(this.components);
             this.flowPanelLeft = new System.Windows.Forms.FlowLayoutPanel();
+            this.labelOpacity = new System.Windows.Forms.Label();
+            this.panelOpacity = new System.Windows.Forms.Panel();
+            this.labelOpacityValue = new System.Windows.Forms.Label();
+            this.trackBarOpacity = new System.Windows.Forms.TrackBar();
             this.panelScrollSpeed = new System.Windows.Forms.Panel();
             this.flowPanelRight = new System.Windows.Forms.FlowLayoutPanel();
             this.panelSeparator = new System.Windows.Forms.Panel();
@@ -77,6 +81,8 @@ private void InitializeComponent() {
             this.panelTimer.SuspendLayout();
             this.panelSize.SuspendLayout();
             this.flowPanelLeft.SuspendLayout();
+            this.panelOpacity.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.trackBarOpacity)).BeginInit();
             this.panelScrollSpeed.SuspendLayout();
             this.flowPanelRight.SuspendLayout();
             this.SuspendLayout();
@@ -208,12 +214,12 @@ private void InitializeComponent() {
             this.tableLayoutDurationButtons.Controls.Add(this.btnDurationMedium, 0, 0);
             this.tableLayoutDurationButtons.Controls.Add(this.btnDurationLong, 1, 0);
             this.tableLayoutDurationButtons.Controls.Add(this.btnDurationShort, 0, 0);
-            this.tableLayoutDurationButtons.Location = new System.Drawing.Point(3, 353);
+            this.tableLayoutDurationButtons.Location = new System.Drawing.Point(3, 401);
             this.tableLayoutDurationButtons.Name = "tableLayoutDurationButtons";
             this.tableLayoutDurationButtons.RowCount = 1;
             this.tableLayoutDurationButtons.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
             this.tableLayoutDurationButtons.Size = new System.Drawing.Size(180, 27);
-            this.tableLayoutDurationButtons.TabIndex = 12;
+            this.tableLayoutDurationButtons.TabIndex = 14;
             // 
             // btnDurationMedium
             // 
@@ -349,11 +355,11 @@ private void InitializeComponent() {
             // 
             this.checkTimerCountDown.AutoSize = true;
             this.checkTimerCountDown.Font = new System.Drawing.Font("Segoe UI", 9F);
-            this.checkTimerCountDown.Location = new System.Drawing.Point(6, 266);
+            this.checkTimerCountDown.Location = new System.Drawing.Point(6, 314);
             this.checkTimerCountDown.Margin = new System.Windows.Forms.Padding(6, 3, 3, 2);
             this.checkTimerCountDown.Name = "checkTimerCountDown";
             this.checkTimerCountDown.Size = new System.Drawing.Size(132, 19);
-            this.checkTimerCountDown.TabIndex = 9;
+            this.checkTimerCountDown.TabIndex = 11;
             this.checkTimerCountDown.Text = "Timer Counts Down";
             this.checkTimerCountDown.UseVisualStyleBackColor = true;
             // 
@@ -361,11 +367,11 @@ private void InitializeComponent() {
             // 
             this.checkNotificationTimer.AutoSize = true;
             this.checkNotificationTimer.Font = new System.Drawing.Font("Segoe UI", 9F);
-            this.checkNotificationTimer.Location = new System.Drawing.Point(6, 242);
+            this.checkNotificationTimer.Location = new System.Drawing.Point(6, 290);
             this.checkNotificationTimer.Margin = new System.Windows.Forms.Padding(6, 6, 3, 2);
             this.checkNotificationTimer.Name = "checkNotificationTimer";
             this.checkNotificationTimer.Size = new System.Drawing.Size(164, 19);
-            this.checkNotificationTimer.TabIndex = 8;
+            this.checkNotificationTimer.TabIndex = 10;
             this.checkNotificationTimer.Text = "Display Notification Timer";
             this.checkNotificationTimer.UseVisualStyleBackColor = true;
             // 
@@ -490,32 +496,32 @@ private void InitializeComponent() {
             // 
             this.panelTimer.Controls.Add(this.labelDurationValue);
             this.panelTimer.Controls.Add(this.trackBarDuration);
-            this.panelTimer.Location = new System.Drawing.Point(0, 315);
+            this.panelTimer.Location = new System.Drawing.Point(0, 363);
             this.panelTimer.Margin = new System.Windows.Forms.Padding(0, 1, 0, 0);
             this.panelTimer.Name = "panelTimer";
             this.panelTimer.Size = new System.Drawing.Size(300, 35);
-            this.panelTimer.TabIndex = 11;
+            this.panelTimer.TabIndex = 13;
             // 
             // labelDuration
             // 
             this.labelDuration.AutoSize = true;
             this.labelDuration.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold);
-            this.labelDuration.Location = new System.Drawing.Point(3, 299);
+            this.labelDuration.Location = new System.Drawing.Point(3, 347);
             this.labelDuration.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
             this.labelDuration.Name = "labelDuration";
             this.labelDuration.Size = new System.Drawing.Size(54, 15);
-            this.labelDuration.TabIndex = 10;
+            this.labelDuration.TabIndex = 12;
             this.labelDuration.Text = "Duration";
             // 
             // labelTimer
             // 
             this.labelTimer.AutoSize = true;
             this.labelTimer.Font = new System.Drawing.Font("Segoe UI Semibold", 10.5F, System.Drawing.FontStyle.Bold);
-            this.labelTimer.Location = new System.Drawing.Point(0, 216);
-            this.labelTimer.Margin = new System.Windows.Forms.Padding(0, 40, 0, 1);
+            this.labelTimer.Location = new System.Drawing.Point(0, 264);
+            this.labelTimer.Margin = new System.Windows.Forms.Padding(0, 25, 0, 1);
             this.labelTimer.Name = "labelTimer";
             this.labelTimer.Size = new System.Drawing.Size(50, 19);
-            this.labelTimer.TabIndex = 7;
+            this.labelTimer.TabIndex = 9;
             this.labelTimer.Text = "TIMER";
             // 
             // labelSize
@@ -555,6 +561,8 @@ private void InitializeComponent() {
             this.flowPanelLeft.Controls.Add(this.checkNonIntrusive);
             this.flowPanelLeft.Controls.Add(this.labelIdlePause);
             this.flowPanelLeft.Controls.Add(this.comboBoxIdlePause);
+            this.flowPanelLeft.Controls.Add(this.labelOpacity);
+            this.flowPanelLeft.Controls.Add(this.panelOpacity);
             this.flowPanelLeft.Controls.Add(this.labelTimer);
             this.flowPanelLeft.Controls.Add(this.checkNotificationTimer);
             this.flowPanelLeft.Controls.Add(this.checkTimerCountDown);
@@ -568,6 +576,52 @@ private void InitializeComponent() {
             this.flowPanelLeft.TabIndex = 0;
             this.flowPanelLeft.WrapContents = false;
             // 
+            // labelOpacity
+            // 
+            this.labelOpacity.AutoSize = true;
+            this.labelOpacity.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold);
+            this.labelOpacity.Location = new System.Drawing.Point(3, 188);
+            this.labelOpacity.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
+            this.labelOpacity.Name = "labelOpacity";
+            this.labelOpacity.Size = new System.Drawing.Size(48, 15);
+            this.labelOpacity.TabIndex = 7;
+            this.labelOpacity.Text = "Opacity";
+            // 
+            // panelOpacity
+            // 
+            this.panelOpacity.Controls.Add(this.labelOpacityValue);
+            this.panelOpacity.Controls.Add(this.trackBarOpacity);
+            this.panelOpacity.Location = new System.Drawing.Point(0, 204);
+            this.panelOpacity.Margin = new System.Windows.Forms.Padding(0, 1, 0, 0);
+            this.panelOpacity.Name = "panelOpacity";
+            this.panelOpacity.Size = new System.Drawing.Size(300, 35);
+            this.panelOpacity.TabIndex = 8;
+            // 
+            // labelOpacityValue
+            // 
+            this.labelOpacityValue.BackColor = System.Drawing.SystemColors.Control;
+            this.labelOpacityValue.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.labelOpacityValue.Location = new System.Drawing.Point(176, 4);
+            this.labelOpacityValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
+            this.labelOpacityValue.Name = "labelOpacityValue";
+            this.labelOpacityValue.Size = new System.Drawing.Size(38, 15);
+            this.labelOpacityValue.TabIndex = 1;
+            this.labelOpacityValue.Text = "100%";
+            this.labelOpacityValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
+            // 
+            // trackBarOpacity
+            // 
+            this.trackBarOpacity.AutoSize = false;
+            this.trackBarOpacity.Location = new System.Drawing.Point(3, 3);
+            this.trackBarOpacity.Maximum = 100;
+            this.trackBarOpacity.Minimum = 20;
+            this.trackBarOpacity.Name = "trackBarOpacity";
+            this.trackBarOpacity.Size = new System.Drawing.Size(177, 30);
+            this.trackBarOpacity.SmallChange = 5;
+            this.trackBarOpacity.TabIndex = 0;
+            this.trackBarOpacity.TickFrequency = 10;
+            this.trackBarOpacity.Value = 100;
+            // 
             // panelScrollSpeed
             // 
             this.panelScrollSpeed.Controls.Add(this.trackBarScrollSpeed);
@@ -630,6 +684,8 @@ private void InitializeComponent() {
             this.panelSize.ResumeLayout(false);
             this.flowPanelLeft.ResumeLayout(false);
             this.flowPanelLeft.PerformLayout();
+            this.panelOpacity.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.trackBarOpacity)).EndInit();
             this.panelScrollSpeed.ResumeLayout(false);
             this.flowPanelRight.ResumeLayout(false);
             this.flowPanelRight.PerformLayout();
@@ -682,5 +738,9 @@ private void InitializeComponent() {
         private System.Windows.Forms.Panel panelScrollSpeed;
         private System.Windows.Forms.FlowLayoutPanel flowPanelRight;
         private System.Windows.Forms.Panel panelSeparator;
+        private System.Windows.Forms.Label labelOpacity;
+        private System.Windows.Forms.Panel panelOpacity;
+        private System.Windows.Forms.Label labelOpacityValue;
+        private System.Windows.Forms.TrackBar trackBarOpacity;
     }
 }
diff --git a/Dialogs/Settings/TabSettingsNotifications.cs b/Dialogs/Settings/TabSettingsNotifications.cs
index 2c42227a..503a3f22 100644
--- a/Dialogs/Settings/TabSettingsNotifications.cs
+++ b/Dialogs/Settings/TabSettingsNotifications.cs
@@ -48,6 +48,9 @@ public TabSettingsNotifications(FormNotificationExample notification){
             comboBoxIdlePause.Items.Add("5 minutes");
             comboBoxIdlePause.SelectedIndex = Math.Max(0, Array.FindIndex(IdlePauseSeconds, val => val == Config.NotificationIdlePauseSeconds));
 
+            trackBarOpacity.SetValueSafe(Config.NotificationWindowOpacity);
+            labelOpacityValue.Text = Config.NotificationWindowOpacity + "%";
+
             // timer
 
             toolTip.SetToolTip(checkTimerCountDown, "The notification timer counts down instead of up.");
@@ -105,6 +108,7 @@ public override void OnReady(){
             checkSkipOnLinkClick.CheckedChanged += checkSkipOnLinkClick_CheckedChanged;
             checkNonIntrusive.CheckedChanged += checkNonIntrusive_CheckedChanged;
             comboBoxIdlePause.SelectedValueChanged += comboBoxIdlePause_SelectedValueChanged;
+            trackBarOpacity.ValueChanged += trackBarOpacity_ValueChanged;
 
             checkNotificationTimer.CheckedChanged += checkNotificationTimer_CheckedChanged;
             checkTimerCountDown.CheckedChanged += checkTimerCountDown_CheckedChanged;
@@ -176,6 +180,13 @@ private void comboBoxIdlePause_SelectedValueChanged(object sender, EventArgs e){
             Config.NotificationIdlePauseSeconds = IdlePauseSeconds[comboBoxIdlePause.SelectedIndex];
         }
 
+        private void trackBarOpacity_ValueChanged(object sender, EventArgs e){
+            if (trackBarOpacity.AlignValueToTick()){
+                Config.NotificationWindowOpacity = trackBarOpacity.Value;
+                labelOpacityValue.Text = Config.NotificationWindowOpacity + "%";
+            }
+        }
+
         #endregion
         #region Timer