diff --git a/Browser/Bridge/TweetDeckBridge.cs b/Browser/Bridge/TweetDeckBridge.cs
index bfbe2089..0bdb23fb 100644
--- a/Browser/Bridge/TweetDeckBridge.cs
+++ b/Browser/Bridge/TweetDeckBridge.cs
@@ -5,6 +5,7 @@
 using TweetDuck.Browser.Notification;
 using TweetDuck.Controls;
 using TweetDuck.Dialogs;
+using TweetDuck.Management;
 using TweetDuck.Utils;
 using TweetLib.Core.Features.Notifications;
 
@@ -108,7 +109,7 @@ public void StopVideo(){
         }
 
         public void FixClipboard(){
-            form.InvokeAsyncSafe(WindowsUtils.ClipboardStripHtmlStyles);
+            form.InvokeAsyncSafe(ClipboardManager.StripHtmlStyles);
         }
 
         public void OpenBrowser(string url){
diff --git a/Browser/Handling/ContextMenuBase.cs b/Browser/Handling/ContextMenuBase.cs
index 21b8431f..98095f9c 100644
--- a/Browser/Handling/ContextMenuBase.cs
+++ b/Browser/Handling/ContextMenuBase.cs
@@ -9,6 +9,7 @@
 using TweetDuck.Configuration;
 using TweetDuck.Controls;
 using TweetDuck.Dialogs;
+using TweetDuck.Management;
 using TweetDuck.Management.Analytics;
 using TweetDuck.Utils;
 using TweetLib.Core.Features.Twitter;
@@ -202,7 +203,7 @@ protected static void OpenBrowser(Control control, string url){
         }
 
         protected static void SetClipboardText(Control control, string text){
-            control.InvokeAsyncSafe(() => WindowsUtils.SetClipboard(text, TextDataFormat.UnicodeText));
+            control.InvokeAsyncSafe(() => ClipboardManager.SetText(text, TextDataFormat.UnicodeText));
         }
 
         protected static void InsertSelectionSearchItem(IMenuModel model, CefMenuCommand insertCommand, string insertLabel){
diff --git a/Management/ClipboardManager.cs b/Management/ClipboardManager.cs
new file mode 100644
index 00000000..b7281fb8
--- /dev/null
+++ b/Management/ClipboardManager.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using System.Text.RegularExpressions;
+using System.Windows.Forms;
+
+namespace TweetDuck.Management{
+    static class ClipboardManager{
+        private static readonly Lazy<Regex> RegexStripHtmlStyles = new Lazy<Regex>(() => new Regex(@"\s?(?:style|class)="".*?"""), false);
+        private static readonly Lazy<Regex> RegexOffsetClipboardHtml = new Lazy<Regex>(() => new Regex(@"(?<=EndHTML:|EndFragment:)(\d+)"), false);
+
+        public static void SetText(string text, TextDataFormat format){
+            if (string.IsNullOrEmpty(text)){
+                return;
+            }
+
+            DataObject obj = new DataObject();
+            obj.SetText(text, format);
+            SetClipboardData(obj);
+        }
+
+        public static void SetImage(Image image){
+            DataObject obj = new DataObject();
+            obj.SetImage(image);
+            SetClipboardData(obj);
+        }
+
+        private static void SetClipboardData(DataObject obj){
+            try{
+                Clipboard.SetDataObject(obj);
+            }catch(ExternalException e){
+                Program.Reporter.HandleException("Clipboard Error", "TweetDuck could not access the clipboard as it is currently used by another process.", true, e);
+            }
+        }
+
+        public static void StripHtmlStyles(){
+            if (!Clipboard.ContainsText(TextDataFormat.Html) || !Clipboard.ContainsText(TextDataFormat.UnicodeText)){
+                return;
+            }
+
+            string originalText = Clipboard.GetText(TextDataFormat.UnicodeText);
+            string originalHtml = Clipboard.GetText(TextDataFormat.Html);
+
+            string updatedHtml = RegexStripHtmlStyles.Value.Replace(originalHtml, string.Empty);
+
+            int removed = originalHtml.Length - updatedHtml.Length;
+            updatedHtml = RegexOffsetClipboardHtml.Value.Replace(updatedHtml, match => (int.Parse(match.Value) - removed).ToString().PadLeft(match.Value.Length, '0'));
+            
+            DataObject obj = new DataObject();
+            obj.SetText(originalText, TextDataFormat.UnicodeText);
+            obj.SetText(updatedHtml, TextDataFormat.Html);
+            SetClipboardData(obj);
+        }
+    }
+}
diff --git a/TweetDuck.csproj b/TweetDuck.csproj
index bdc55b4b..3876be54 100644
--- a/TweetDuck.csproj
+++ b/TweetDuck.csproj
@@ -73,6 +73,7 @@
     <Compile Include="Controls\NumericUpDownEx.cs">
       <SubType>Component</SubType>
     </Compile>
+    <Compile Include="Management\ClipboardManager.cs" />
     <Compile Include="Management\FormManager.cs" />
     <Compile Include="Browser\Handling\ContextMenuGuide.cs" />
     <Compile Include="Browser\Handling\DragHandlerBrowser.cs" />
diff --git a/Utils/WindowsUtils.cs b/Utils/WindowsUtils.cs
index 90b63ec2..97a8d154 100644
--- a/Utils/WindowsUtils.cs
+++ b/Utils/WindowsUtils.cs
@@ -3,10 +3,7 @@
 using System.ComponentModel;
 using System.Diagnostics;
 using System.IO;
-using System.Runtime.InteropServices;
-using System.Text.RegularExpressions;
 using System.Threading;
-using System.Windows.Forms;
 using Microsoft.Win32;
 
 namespace TweetDuck.Utils{
@@ -16,9 +13,6 @@ static class WindowsUtils{
         public static bool ShouldAvoidToolWindow { get; } = IsWindows8OrNewer;
         public static bool IsAeroEnabled => IsWindows8OrNewer || (NativeMethods.DwmIsCompositionEnabled(out bool isCompositionEnabled) == 0 && isCompositionEnabled);
 
-        private static readonly Lazy<Regex> RegexStripHtmlStyles = new Lazy<Regex>(() => new Regex(@"\s?(?:style|class)="".*?"""), false);
-        private static readonly Lazy<Regex> RegexOffsetClipboardHtml = new Lazy<Regex>(() => new Regex(@"(?<=EndHTML:|EndFragment:)(\d+)"), false);
-
         private static bool OSVersionEquals(int major, int minor){
             Version ver = Environment.OSVersion.Version;
             return ver.Major == major && ver.Minor == minor;
@@ -69,43 +63,6 @@ public static void TryDeleteFolderWhenAble(string path, int timeout){
             }).Start();
         }
 
-        public static void ClipboardStripHtmlStyles(){
-            if (!Clipboard.ContainsText(TextDataFormat.Html) || !Clipboard.ContainsText(TextDataFormat.UnicodeText)){
-                return;
-            }
-
-            string originalText = Clipboard.GetText(TextDataFormat.UnicodeText);
-            string originalHtml = Clipboard.GetText(TextDataFormat.Html);
-
-            string updatedHtml = RegexStripHtmlStyles.Value.Replace(originalHtml, string.Empty);
-
-            int removed = originalHtml.Length - updatedHtml.Length;
-            updatedHtml = RegexOffsetClipboardHtml.Value.Replace(updatedHtml, match => (int.Parse(match.Value) - removed).ToString().PadLeft(match.Value.Length, '0'));
-            
-            DataObject obj = new DataObject();
-            obj.SetText(originalText, TextDataFormat.UnicodeText);
-            obj.SetText(updatedHtml, TextDataFormat.Html);
-            SetClipboardData(obj);
-        }
-
-        public static void SetClipboard(string text, TextDataFormat format){
-            if (string.IsNullOrEmpty(text)){
-                return;
-            }
-
-            DataObject obj = new DataObject();
-            obj.SetText(text, format);
-            SetClipboardData(obj);
-        }
-
-        private static void SetClipboardData(DataObject obj){
-            try{
-                Clipboard.SetDataObject(obj);
-            }catch(ExternalException e){
-                Program.Reporter.HandleException("Clipboard Error", "TweetDuck could not access the clipboard as it is currently used by another process.", true, e);
-            }
-        }
-
         public static IEnumerable<Browser> FindInstalledBrowsers(){
             static IEnumerable<Browser> ReadBrowsersFromKey(RegistryHive hive){
                 using RegistryKey root = RegistryKey.OpenBaseKey(hive, RegistryView.Default);