diff --git a/Configuration/UserConfig.cs b/Configuration/UserConfig.cs
index 41e99b18..15fb291d 100644
--- a/Configuration/UserConfig.cs
+++ b/Configuration/UserConfig.cs
@@ -14,7 +14,7 @@ namespace TweetDck.Configuration{
     sealed class UserConfig{
         private static readonly IFormatter Formatter = new BinaryFormatter();
 
-        private const int CurrentFileVersion = 7;
+        private const int CurrentFileVersion = 8;
 
         // START OF CONFIGURATION
 
@@ -68,6 +68,28 @@ public bool MuteNotifications{
             }
         }
 
+        public int ZoomLevel{
+            get{
+                return zoomLevel;
+            }
+
+            set{
+                if (zoomLevel == value)return;
+
+                zoomLevel = value;
+
+                if (ZoomLevelChanged != null){
+                    ZoomLevelChanged(this, new EventArgs());
+                }
+            }
+        }
+
+        public double ZoomMultiplier{
+            get{
+                return zoomLevel/100.0;
+            }
+        }
+
         public string NotificationSoundPath{
             get{
                 return string.IsNullOrEmpty(notificationSoundPath) ? string.Empty : notificationSoundPath;
@@ -99,6 +121,9 @@ public TrayIcon.Behavior TrayBehavior{
         [field:NonSerialized]
         public event EventHandler MuteToggled;
         
+        [field:NonSerialized]
+        public event EventHandler ZoomLevelChanged;
+        
         [field:NonSerialized]
         public event EventHandler TrayBehaviorChanged;
 
@@ -107,6 +132,7 @@ public TrayIcon.Behavior TrayBehavior{
 
         private int fileVersion;
         private bool muteNotifications;
+        private int zoomLevel;
         private string notificationSoundPath;
         private TrayIcon.Behavior trayBehavior;
 
@@ -114,6 +140,7 @@ private UserConfig(string file){
             this.file = file;
 
             BrowserWindow = new WindowState();
+            ZoomLevel = 100;
             DisplayNotificationTimer = true;
             NotificationNonIntrusiveMode = true;
             NotificationPosition = TweetNotification.Position.TopRight;
@@ -175,6 +202,11 @@ private void UpgradeFile(){
                 ++fileVersion;
             }
 
+            if (fileVersion == 7){
+                ZoomLevel = 100;
+                ++fileVersion;
+            }
+
             // update the version
             fileVersion = CurrentFileVersion;
             Save();
diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs
index 204cd30d..2480d2f7 100644
--- a/Core/FormBrowser.cs
+++ b/Core/FormBrowser.cs
@@ -109,6 +109,7 @@ public FormBrowser(PluginManager pluginManager, UpdaterSettings updaterSettings)
             UpdateTrayIcon();
 
             Config.MuteToggled += Config_MuteToggled;
+            Config.ZoomLevelChanged += Config_ZoomLevelChanged;
 
             this.updates = new UpdateHandler(browser, this, updaterSettings);
             this.updates.UpdateAccepted += updates_UpdateAccepted;
@@ -171,8 +172,14 @@ private void browser_LoadingStateChanged(object sender, LoadingStateChangedEvent
         }
 
         private void browser_FrameLoadStart(object sender, FrameLoadStartEventArgs e){
-            if (e.Frame.IsMain && BrowserUtils.IsTwitterWebsite(e.Frame)){
-                ScriptLoader.ExecuteFile(e.Frame, "twitter.js");
+            if (e.Frame.IsMain){
+                if (Config.ZoomLevel != 100){
+                    BrowserUtils.SetZoomLevel(browser.GetBrowser(), Config.ZoomLevel);
+                }
+
+                if (BrowserUtils.IsTwitterWebsite(e.Frame)){
+                    ScriptLoader.ExecuteFile(e.Frame, "twitter.js");
+                }
             }
         }
 
@@ -253,6 +260,10 @@ private void Config_MuteToggled(object sender, EventArgs e){
             UpdateProperties(PropertyBridge.Properties.MuteNotifications);
         }
 
+        private void Config_ZoomLevelChanged(object sender, EventArgs e){
+            BrowserUtils.SetZoomLevel(browser.GetBrowser(), Config.ZoomLevel);
+        }
+
         private void Config_TrayBehaviorChanged(object sender, EventArgs e){
             UpdateTrayIcon();
         }
diff --git a/Core/Notification/FormNotificationBase.cs b/Core/Notification/FormNotificationBase.cs
index 9e1ba134..d1aafc81 100644
--- a/Core/Notification/FormNotificationBase.cs
+++ b/Core/Notification/FormNotificationBase.cs
@@ -188,7 +188,7 @@ protected virtual void LoadTweet(TweetNotification tweet){
         }
 
         protected virtual void SetNotificationSize(int width, int height){
-            browser.ClientSize = ClientSize = new Size(width, height);
+            browser.ClientSize = ClientSize = new Size((int)Math.Round(width*Program.UserConfig.ZoomMultiplier), (int)Math.Round(height*Program.UserConfig.ZoomMultiplier));
         }
 
         protected virtual void OnNotificationReady(){
diff --git a/Core/Notification/FormNotificationMain.cs b/Core/Notification/FormNotificationMain.cs
index eb2f55bf..9b9c4fd2 100644
--- a/Core/Notification/FormNotificationMain.cs
+++ b/Core/Notification/FormNotificationMain.cs
@@ -26,14 +26,16 @@ static FormNotificationMain(){
         private static int BaseClientWidth{
             get{
                 int level = TweetNotification.FontSizeLevel;
-                return level == 0 ? 284 : (int)Math.Round(284.0*(1.0+0.05*level));
+                int width = level == 0 ? 284 : (int)Math.Round(284.0*(1.0+0.05*level));
+                return (int)Math.Round(width*Program.UserConfig.ZoomMultiplier);
             }
         }
 
         private static int BaseClientHeight{
             get{
                 int level = TweetNotification.FontSizeLevel;
-                return level == 0 ? 118 : (int)Math.Round(118.0*(1.0+0.075*level));
+                int height = level == 0 ? 118 : (int)Math.Round(118.0*(1.0+0.075*level));
+                return (int)Math.Round(height*Program.UserConfig.ZoomMultiplier);
             }
         }
         
diff --git a/Core/Other/Settings/TabSettingsGeneral.Designer.cs b/Core/Other/Settings/TabSettingsGeneral.Designer.cs
index d3059109..abc1932d 100644
--- a/Core/Other/Settings/TabSettingsGeneral.Designer.cs
+++ b/Core/Other/Settings/TabSettingsGeneral.Designer.cs
@@ -34,9 +34,14 @@ private void InitializeComponent() {
             this.groupTray = new System.Windows.Forms.GroupBox();
             this.labelTrayIcon = new System.Windows.Forms.Label();
             this.groupInterface = new System.Windows.Forms.GroupBox();
+            this.labelZoomValue = new System.Windows.Forms.Label();
+            this.trackBarZoom = new System.Windows.Forms.TrackBar();
+            this.labelZoom = new System.Windows.Forms.Label();
             this.groupUpdates = new System.Windows.Forms.GroupBox();
+            this.zoomUpdateTimer = new System.Windows.Forms.Timer(this.components);
             this.groupTray.SuspendLayout();
             this.groupInterface.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.trackBarZoom)).BeginInit();
             this.groupUpdates.SuspendLayout();
             this.SuspendLayout();
             // 
@@ -116,7 +121,7 @@ private void InitializeComponent() {
             this.groupTray.Controls.Add(this.checkTrayHighlight);
             this.groupTray.Controls.Add(this.labelTrayIcon);
             this.groupTray.Controls.Add(this.comboBoxTrayType);
-            this.groupTray.Location = new System.Drawing.Point(9, 82);
+            this.groupTray.Location = new System.Drawing.Point(9, 145);
             this.groupTray.Name = "groupTray";
             this.groupTray.Size = new System.Drawing.Size(183, 93);
             this.groupTray.TabIndex = 1;
@@ -135,15 +140,57 @@ private void InitializeComponent() {
             // 
             // groupInterface
             // 
+            this.groupInterface.Controls.Add(this.labelZoomValue);
+            this.groupInterface.Controls.Add(this.trackBarZoom);
+            this.groupInterface.Controls.Add(this.labelZoom);
             this.groupInterface.Controls.Add(this.checkSpellCheck);
             this.groupInterface.Controls.Add(this.checkExpandLinks);
             this.groupInterface.Location = new System.Drawing.Point(9, 9);
             this.groupInterface.Name = "groupInterface";
-            this.groupInterface.Size = new System.Drawing.Size(183, 67);
+            this.groupInterface.Size = new System.Drawing.Size(183, 130);
             this.groupInterface.TabIndex = 0;
             this.groupInterface.TabStop = false;
             this.groupInterface.Text = "User Interface";
             // 
+            // labelZoomValue
+            // 
+            this.labelZoomValue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.labelZoomValue.BackColor = System.Drawing.Color.Transparent;
+            this.labelZoomValue.Location = new System.Drawing.Point(139, 93);
+            this.labelZoomValue.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
+            this.labelZoomValue.Name = "labelZoomValue";
+            this.labelZoomValue.Size = new System.Drawing.Size(38, 13);
+            this.labelZoomValue.TabIndex = 4;
+            this.labelZoomValue.Text = "100%";
+            this.labelZoomValue.TextAlign = System.Drawing.ContentAlignment.TopRight;
+            this.toolTip.SetToolTip(this.labelZoomValue, "Changes the zoom level.\r\nAlso affects notifications and screenshots.");
+            // 
+            // trackBarZoom
+            // 
+            this.trackBarZoom.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.trackBarZoom.AutoSize = false;
+            this.trackBarZoom.LargeChange = 25;
+            this.trackBarZoom.Location = new System.Drawing.Point(6, 92);
+            this.trackBarZoom.Maximum = 200;
+            this.trackBarZoom.Minimum = 50;
+            this.trackBarZoom.Name = "trackBarZoom";
+            this.trackBarZoom.Size = new System.Drawing.Size(141, 30);
+            this.trackBarZoom.SmallChange = 5;
+            this.trackBarZoom.TabIndex = 3;
+            this.trackBarZoom.TickFrequency = 25;
+            this.trackBarZoom.Value = 100;
+            // 
+            // labelZoom
+            // 
+            this.labelZoom.AutoSize = true;
+            this.labelZoom.Location = new System.Drawing.Point(5, 76);
+            this.labelZoom.Margin = new System.Windows.Forms.Padding(3, 12, 3, 0);
+            this.labelZoom.Name = "labelZoom";
+            this.labelZoom.Size = new System.Drawing.Size(34, 13);
+            this.labelZoom.TabIndex = 2;
+            this.labelZoom.Text = "Zoom";
+            // 
             // groupUpdates
             // 
             this.groupUpdates.Controls.Add(this.checkUpdateNotifications);
@@ -155,6 +202,11 @@ private void InitializeComponent() {
             this.groupUpdates.TabStop = false;
             this.groupUpdates.Text = "Updates";
             // 
+            // zoomUpdateTimer
+            // 
+            this.zoomUpdateTimer.Interval = 250;
+            this.zoomUpdateTimer.Tick += new System.EventHandler(this.zoomUpdateTimer_Tick);
+            // 
             // TabSettingsGeneral
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -168,6 +220,7 @@ private void InitializeComponent() {
             this.groupTray.PerformLayout();
             this.groupInterface.ResumeLayout(false);
             this.groupInterface.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.trackBarZoom)).EndInit();
             this.groupUpdates.ResumeLayout(false);
             this.groupUpdates.PerformLayout();
             this.ResumeLayout(false);
@@ -187,5 +240,9 @@ private void InitializeComponent() {
         private System.Windows.Forms.GroupBox groupUpdates;
         private System.Windows.Forms.CheckBox checkUpdateNotifications;
         private System.Windows.Forms.Button btnCheckUpdates;
+        private System.Windows.Forms.Label labelZoom;
+        private System.Windows.Forms.Label labelZoomValue;
+        private System.Windows.Forms.TrackBar trackBarZoom;
+        private System.Windows.Forms.Timer zoomUpdateTimer;
     }
 }
diff --git a/Core/Other/Settings/TabSettingsGeneral.cs b/Core/Other/Settings/TabSettingsGeneral.cs
index dca0d9b6..2e01b515 100644
--- a/Core/Other/Settings/TabSettingsGeneral.cs
+++ b/Core/Other/Settings/TabSettingsGeneral.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Windows.Forms;
+using TweetDck.Core.Controls;
 using TweetDck.Updates;
 using TweetDck.Updates.Events;
 
@@ -21,6 +22,10 @@ public TabSettingsGeneral(UpdateHandler updates){
             comboBoxTrayType.Items.Add("Close to Tray");
             comboBoxTrayType.Items.Add("Combined");
             comboBoxTrayType.SelectedIndex = Math.Min(Math.Max((int)Config.TrayBehavior, 0), comboBoxTrayType.Items.Count-1);
+            
+            toolTip.SetToolTip(trackBarZoom, toolTip.GetToolTip(labelZoomValue));
+            trackBarZoom.SetValueSafe(Config.ZoomLevel);
+            labelZoomValue.Text = trackBarZoom.Value+"%";
 
             checkExpandLinks.Checked = Config.ExpandLinksOnHover;
             checkSpellCheck.Checked = Config.EnableSpellCheck;
@@ -32,6 +37,7 @@ public TabSettingsGeneral(UpdateHandler updates){
         public override void OnReady(){
             checkExpandLinks.CheckedChanged += checkExpandLinks_CheckedChanged;
             checkSpellCheck.CheckedChanged += checkSpellCheck_CheckedChanged;
+            trackBarZoom.ValueChanged += trackBarZoom_ValueChanged;
 
             comboBoxTrayType.SelectedIndexChanged += comboBoxTrayType_SelectedIndexChanged;
             checkTrayHighlight.CheckedChanged += checkTrayHighlight_CheckedChanged;
@@ -40,6 +46,10 @@ public override void OnReady(){
             btnCheckUpdates.Click += btnCheckUpdates_Click;
         }
 
+        public override void OnClosing(){
+            Config.ZoomLevel = trackBarZoom.Value;
+        }
+
         private void checkExpandLinks_CheckedChanged(object sender, EventArgs e){
             Config.ExpandLinksOnHover = checkExpandLinks.Checked;
         }
@@ -49,6 +59,17 @@ private void checkSpellCheck_CheckedChanged(object sender, EventArgs e){
             PromptRestart();
         }
 
+        private void trackBarZoom_ValueChanged(object sender, EventArgs e){
+            if (trackBarZoom.Value % trackBarZoom.SmallChange != 0){
+                trackBarZoom.Value = trackBarZoom.SmallChange*(int)Math.Floor(((double)trackBarZoom.Value/trackBarZoom.SmallChange)+0.5);
+            }
+            else{
+                zoomUpdateTimer.Stop();
+                zoomUpdateTimer.Start();
+                labelZoomValue.Text = trackBarZoom.Value+"%";
+            }
+        }
+
         private void comboBoxTrayType_SelectedIndexChanged(object sender, EventArgs e){
             Config.TrayBehavior = (TrayIcon.Behavior)comboBoxTrayType.SelectedIndex;
         }
@@ -82,5 +103,10 @@ private void updates_CheckFinished(object sender, UpdateCheckEventArgs e){
                 }
             }
         }
+
+        private void zoomUpdateTimer_Tick(object sender, EventArgs e){
+            Config.ZoomLevel = trackBarZoom.Value;
+            zoomUpdateTimer.Stop();
+        }
     }
 }
diff --git a/Core/Utils/BrowserUtils.cs b/Core/Utils/BrowserUtils.cs
index 09f9a2d9..27e5f95e 100644
--- a/Core/Utils/BrowserUtils.cs
+++ b/Core/Utils/BrowserUtils.cs
@@ -88,6 +88,10 @@ public static void DownloadFileAsync(string url, string target, Action<Exception
             client.DownloadFileAsync(new Uri(url), target);
         }
 
+        public static void SetZoomLevel(IBrowser browser, int percentage){
+            browser.GetHost().SetZoomLevel(Math.Log(percentage/100.0, 1.2));
+        }
+
         public static bool IsTweetDeckWebsite(IFrame frame){
             return frame.Url.Contains("//tweetdeck.twitter.com/");
         }
diff --git a/Resources/Scripts/code.js b/Resources/Scripts/code.js
index a4d10e10..943771c6 100644
--- a/Resources/Scripts/code.js
+++ b/Resources/Scripts/code.js
@@ -350,7 +350,7 @@
     
     window.TDGF_triggerScreenshot = function(){
       if (selectedTweet){
-        var tweetWidth = selectedTweet.width();
+        var tweetWidth = Math.floor(selectedTweet.width());
         var parent = selectedTweet.parent();
         
         var isDetail = parent.hasClass("js-tweet-detail");
@@ -394,7 +394,7 @@
           width: tweetWidth+"px"
         }).appendTo(document.body);
         
-        var realHeight = testTweet.height();
+        var realHeight = Math.floor(testTweet.height());
         testTweet.remove();
         
         $TD.screenshotTweet(selectedTweet.html(), tweetWidth, realHeight);