diff --git a/public/src/modules/notifications.js b/public/src/modules/notifications.js
index ec54fc0812..7b57651867 100644
--- a/public/src/modules/notifications.js
+++ b/public/src/modules/notifications.js
@@ -148,7 +148,7 @@ define('notifications', ['sounds', 'translator', 'components'], function(sound,
 		$(window).trigger('action:notification.updateCount', payload);
 
 		if (payload.updateFavicon) {
-			Tinycon.setBubble(count);
+			Tinycon.setBubble(count > 99 ? '99+' : count);
 		}
 	};
 
diff --git a/public/vendor/tinycon/tinycon.js b/public/vendor/tinycon/tinycon.js
index c1164fa22d..3317cc0d03 100644
--- a/public/vendor/tinycon/tinycon.js
+++ b/public/vendor/tinycon/tinycon.js
@@ -20,7 +20,7 @@
 	var defaults = {
 		width: 7,
 		height: 9,
-		font: 10 * r + 'px arial',
+		font: 9 * r + 'px arial',
 		colour: '#ffffff',
 		background: '#F03D25',
 		fallback: true,
diff --git a/src/topics/unread.js b/src/topics/unread.js
index 2627f5e78f..28846640b7 100644
--- a/src/topics/unread.js
+++ b/src/topics/unread.js
@@ -15,7 +15,7 @@ var utils = require('../../public/src/utils');
 module.exports = function(Topics) {
 
 	Topics.getTotalUnread = function(uid, callback) {
-		Topics.getUnreadTids(0, uid, 0, 20, function(err, tids) {
+		Topics.getUnreadTids(0, uid, 0, 99, function(err, tids) {
 			callback(err, tids ? tids.length : 0);
 		});
 	};
diff --git a/src/user/notifications.js b/src/user/notifications.js
index 64feddda54..6c7634362a 100644
--- a/src/user/notifications.js
+++ b/src/user/notifications.js
@@ -208,7 +208,7 @@ var async = require('async'),
 		if (!parseInt(uid, 10)) {
 			return callback(null, 0);
 		}
-		db.getSortedSetRevRange('uid:' + uid + ':notifications:unread', 0, 20, function(err, nids) {
+		db.getSortedSetRevRange('uid:' + uid + ':notifications:unread', 0, 99, function(err, nids) {
 			callback(err, Array.isArray(nids) ? nids.length : 0);
 		});
 	};