diff --git a/core/main.js b/core/main.js
index 78699469350189f238a2cc703bea034932aba3a7..d562f7cc0b8b49db40454ab76bf3d70e5d174725 100644
--- a/core/main.js
+++ b/core/main.js
@@ -94,20 +94,6 @@ chrome.runtime.getPlatformInfo(function (information) {
     main.operatingSystem = information.os;
 });
 
-if (typeof chrome.browserAction.setBadgeBackgroundColor !== 'function') {
-
-    chrome.browserAction.setBadgeBackgroundColor = function () {};
-    chrome.browserAction.setBadgeText = function () {};
-
-    chrome.browserAction.onClicked.addListener(function () {
-
-        chrome.tabs.create({
-            'url': chrome.extension.getURL('pages/popup/popup.html'),
-            'active': false
-        });
-    });
-}
-
-chrome.browserAction.setBadgeBackgroundColor({
+wrappers.setBadgeBackgroundColor({
     'color': [74, 130, 108, 255]
 });
diff --git a/core/state-manager.js b/core/state-manager.js
index 2728d0a48a3e38533ffbc66655d6ff5c9cbaea85..43bf38b84022368e716de8a1d2d432594f6ca758 100644
--- a/core/state-manager.js
+++ b/core/state-manager.js
@@ -37,14 +37,14 @@ stateManager.registerInjection = function (tabIdentifier, injection) {
 
         if (injectionCount > 0) {
 
-            chrome.browserAction.setBadgeText({
+            wrappers.setBadgeText({
                 'tabId': tabIdentifier,
                 'text': injectionCount.toString()
             });
 
         } else {
 
-            chrome.browserAction.setBadgeText({
+            wrappers.setBadgeText({
                 'tabId': tabIdentifier,
                 'text': ''
             });
@@ -114,12 +114,8 @@ stateManager._createTab = function (tab) {
 
     chrome.webRequest.onBeforeRequest.addListener(function (requestDetails) {
 
-        return new Promise((resolve) => {
-
-            browser.tabs.get(tabIdentifier).then(function (tab) {
-                resolve(interceptor.handleRequest(requestDetails, tabIdentifier, tab));
-            });
-        });
+        let tab = stateManager.tabs[tabIdentifier].details || {};
+        return interceptor.handleRequest(requestDetails, tabIdentifier, tab);
 
     }, requestFilters, [WebRequest.BLOCKING]);
 };
@@ -141,7 +137,7 @@ stateManager._updateTab = function (details) {
 
     if (stateManager.showIconBadge === true) {
 
-        chrome.browserAction.setBadgeText({
+        wrappers.setBadgeText({
             'tabId': tabIdentifier,
             'text': ''
         });
@@ -203,7 +199,7 @@ stateManager._handleStorageChanged = function (changes) {
 
 stateManager._removeIconBadgeFromTab = function (tab) {
 
-    chrome.browserAction.setBadgeText({
+    wrappers.setBadgeText({
         'tabId': tab.id,
         'text': ''
     });
@@ -238,6 +234,17 @@ chrome.storage.local.get('showIconBadge', function (items) {
 chrome.tabs.onCreated.addListener(stateManager._createTab);
 chrome.tabs.onRemoved.addListener(stateManager._removeTab);
 
+chrome.webRequest.onBeforeRequest.addListener(function (requestDetails) {
+
+    if (requestDetails.tabId !== -1) {
+
+        stateManager.tabs[requestDetails.tabId].details = {
+            'url': requestDetails.url
+        };
+    }
+
+}, {'types': ['main_frame'], 'urls': [Address.ANY]});
+
 chrome.webNavigation.onCommitted.addListener(stateManager._updateTab, {
     'url': [{'urlContains': ':'}]
 });
diff --git a/pages/popup/popup.css b/pages/popup/popup.css
index 204c0375147050bb6f32e8d68675ed747f37c82c..37c2c59f19cadf768cd4bf68302c96016c77d3da 100644
--- a/pages/popup/popup.css
+++ b/pages/popup/popup.css
@@ -247,3 +247,14 @@ footer {
     font-style: italic;
     font-weight: 400;
 }
+
+/**
+ * Compatibility
+ */
+
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+
+    body {
+        width: 348px;
+    }
+}