I'm having the same issue. It seems to be chrome specific, as you can pan with the middle mouse button in Edge, Firefox and IExplorer. You CAN pan with the middle mouse button if you press it over the left, right or top side of a map (where it's blank/off the map), but not on the bottom side of the map. My screen resolution is: 1600 x 900 and my browser size is: 1600 x 794. Javascript and Cookies are enabled and i'm running Windows 8.1 Here's my chrome's log in a typical roll20 game. It's worth mentioning it doesn't work on any game. 70 app.js?1506703285:32 TOUCH SUPPORTED: false app.js?1506703285:32 USING WEBGL ACCELERATION... app.js?1506703285:32 WEBGL STARTUP SUCCESS app.js?1506703285:33 Custom Sheet Translation app.js?1506703285:26 select app.js?1506703285:26 Switch mode to select app.js?1506703285:43 Initializing new dice engine with randomness... app.js?1506703285:43 Using random entropy app.js?1506703285:46 Compiling sheet... app.js?1506703285:46 Found webworker script jquery.1.8.2.min.js:2 The specified value " -20 +(@{advancedskillbox1})+@{advancedskillcharacteristic}+@{advancedskillbox2}+@{advancedskillbox3} +@{advancedskillbox4}" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)? clean @ jquery.1.8.2.min.js:2 p.buildFragment @ jquery.1.8.2.min.js:2 parseHTML @ jquery.1.8.2.min.js:2 init @ jquery.1.8.2.min.js:2 p @ jquery.1.8.2.min.js:2 (anonymous) @ app.js?1506703285:46 k @ jquery.1.8.2.min.js:2 fireWith @ jquery.1.8.2.min.js:2 ready @ jquery.1.8.2.min.js:2 D @ jquery.1.8.2.min.js:2 jquery.1.8.2.min.js:2 The specified value "@{XPTotal} - @{XPSpent}" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)? clean @ jquery.1.8.2.min.js:2 p.buildFragment @ jquery.1.8.2.min.js:2 parseHTML @ jquery.1.8.2.min.js:2 init @ jquery.1.8.2.min.js:2 p @ jquery.1.8.2.min.js:2 (anonymous) @ app.js?1506703285:46 k @ jquery.1.8.2.min.js:2 fireWith @ jquery.1.8.2.min.js:2 ready @ jquery.1.8.2.min.js:2 D @ jquery.1.8.2.min.js:2 jquery.1.8.2.min.js:2 The specified value "@{GearCarry} + @{GearCarryMod}" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)? clean @ jquery.1.8.2.min.js:2 p.buildFragment @ jquery.1.8.2.min.js:2 parseHTML @ jquery.1.8.2.min.js:2 init @ jquery.1.8.2.min.js:2 p @ jquery.1.8.2.min.js:2 (anonymous) @ app.js?1506703285:46 k @ jquery.1.8.2.min.js:2 fireWith @ jquery.1.8.2.min.js:2 ready @ jquery.1.8.2.min.js:2 D @ jquery.1.8.2.min.js:2 jquery.1.8.2.min.js:2 The specified value "@{GearCarry} + @{GearCarryMod} - @{GearCarryCurrent}" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)? clean @ jquery.1.8.2.min.js:2 p.buildFragment @ jquery.1.8.2.min.js:2 parseHTML @ jquery.1.8.2.min.js:2 init @ jquery.1.8.2.min.js:2 p @ jquery.1.8.2.min.js:2 (anonymous) @ app.js?1506703285:46 k @ jquery.1.8.2.min.js:2 fireWith @ jquery.1.8.2.min.js:2 ready @ jquery.1.8.2.min.js:2 D @ jquery.1.8.2.min.js:2 app.js?1506703285:46 Finding sheet rolls... app.js?1506703285:48 window resize app.js?1506703285:32 Final set zoom! app.js?1506703285:32 UPDATE GL SIZE! app.js?1506703285:32 Final set zoom! tutorial_tips.js:7 tuts loaded app.roll20.net/:1 Mixed Content: The page at '<a href="https://app.roll20.net/editor/" rel="nofollow">https://app.roll20.net/editor/</a>' was loaded over HTTPS, but requested an insecure image '<a href="http://imgsrv.roll20.net/?src=i.imgur.com/rVbRWKo.png%3F2" rel="nofollow">http://imgsrv.roll20.net/?src=i.imgur.com/rVbRWKo.png%3F2</a>'. This content should also be served over HTTPS. sheetsandboxworker.js?20170926:sourcemap:260 Starting up WEB WORKER VM28:571 •.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ The Aaron Sheet v0.2.3 ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.• VM28:572 •.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ Last update: Fri Mar 04 2016 13:27:36 GMT+0000 (GMT Standard Time) ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.• app.js?1506703285:38 Final page load. app.js?1506703285:38 Auth'ed. app.js?1506703285:38 Go post auth! app.js?1506703285:38 initial setup app.js?1506703285:36 T.s {attributes: {…}, _escapedAttributes: {…}, cid: "c0", changed: {…}, _silent: {…}, …} app.js?1506703285:38 Got players value... app.js?1506703285:38 joining game... app.js?1506703285:36 Player -KOMQcGj78cwHE-2ZH8T is offline... app.js?1506703285:36 Player -KOMQiCdMeTSHgRrbdl0 is offline... app.js?1506703285:36 Global Volume: 10=0.010000000000000002 app.js?1506703285:36 Player -KOMR41x3RcrLqefX6UD is offline... app.js?1506703285:36 Player -KOS-iBO-FIFU_-TIOmY is offline... app.js?1506703285:36 Player -KPKjM5nJ9PUchEWRgRv is offline... app.js?1506703285:36 Player -KShErNGQlbX62q2MpD4 is offline... app.js?1506703285:36 Player -KlyTBsOlFd4rwLJaHth is offline... app.js?1506703285:36 Player -KlyUrSrPcy94QMjAO-W is offline... app.js?1506703285:38 Deferred finish joining... app.js?1506703285:31 Firebase Online app.js?1506703285:36 Adding myself before r app.js?1506703285:46 Refresh Journal List! app.js?1506703285:46 Search took 8ms 10app.js?1506703285:35 Full load page! app.js?1506703285:38 We have 27 pages app.js?1506703285:38 Scan for new plays! app.js?1506703285:38 handle page changes app.js?1506703285:38 false app.js?1506703285:34 Do refresh link cache! app.js?1506703285:38 init active page! app.js?1506703285:35 activate page! app.js?1506703285:35 FULLY ACTIVATE VIEWS FOR PAGE. app.js?1506703285:46 Refresh Journal List! app.js?1506703285:46 Search took 6ms 2app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... 2app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3974" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3974</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3974" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3974</a>... 14app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3974" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3974</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3974" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3974</a>... app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3974" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3974</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3974" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3974</a>... app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... 10app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... 7app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... 13app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... 5app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... 28app.js?1506703285:35 setting src app.js?1506703285:44 ignoring message, not gm, and not original player. 10app.js?1506703285:35 setting src app.js?1506703285:35 Graphics: 74 13app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... 5app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3954" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3954</a>... app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... app.js?1506703285:35 Swapping <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... to <a href="https://s3.amazonaws.com/files.d20.io/images/3957" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/3957</a>... app.js?1506703285:35 Paths: 1 21app.js?1506703285:35 setting src app.js?1506703285:35 Reorder by ZORDER 21app.js?1506703285:35 setting src app.js?1506703285:35 Reorder by ZORDER