I have followed the instructions on that page. Most of the requested info is in the initial post above, but I have reproduced it all here with a console log. Chrome 45.0.2454.101 OSX 10.10.5 Javascript is enabled I am not running any anti-virus software I disabled all chrome extensions before reproducing the bug Steps to reproduce: (not sure if all are necessary) - join a game as GM - create a new page - set scale to 2 and units to m., turn grid off, set grid type to Hex (V) - exit game - join game again - switch to created page - try ruler tool on page (all distances measure 0) - try creating a token and moving it with spacebar (all distances measure 0) - turn grid on, try again (distances measured correctly) - turn grid back off, try again (distances still measured correctly) /editor/:12 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' https://*.googlesyndication.com https://*.doubleclick.net https://*.googlesyndication.com <a href="https://www.googletagservices.com" rel="nofollow">https://www.googletagservices.com</a> https://*.googlesyndication.com <a href="https://www.google-analytics.com" rel="nofollow">https://www.google-analytics.com</a> https://*.googlesyndication.com <a href="https://d3clqjduf2gvxg.cloudfront.net" rel="nofollow">https://d3clqjduf2gvxg.cloudfront.net</a> https://*.googlesyndication.com https://*.firebaseio.com https://*.googlesyndication.com https://*.opentok.com https://*.googlesyndication.com <a href="http://www.google-analytics.com" rel="nofollow">http://www.google-analytics.com</a>". Either the 'unsafe-inline' keyword, a hash ('sha256-gIBGLISYUsPOtF5LdN6kNycHmqgZ4aUwMXHNNLHuUwQ='), or a nonce ('nonce-...') is required to enable inline execution. /editor/:13 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' https://*.googlesyndication.com https://*.doubleclick.net https://*.googlesyndication.com <a href="https://www.googletagservices.com" rel="nofollow">https://www.googletagservices.com</a> https://*.googlesyndication.com <a href="https://www.google-analytics.com" rel="nofollow">https://www.google-analytics.com</a> https://*.googlesyndication.com <a href="https://d3clqjduf2gvxg.cloudfront.net" rel="nofollow">https://d3clqjduf2gvxg.cloudfront.net</a> https://*.googlesyndication.com https://*.firebaseio.com https://*.googlesyndication.com https://*.opentok.com https://*.googlesyndication.com <a href="http://www.google-analytics.com" rel="nofollow">http://www.google-analytics.com</a>". Either the 'unsafe-inline' keyword, a hash ('sha256-C5YNbbSDMtE6nUAc_oefTPBOxP7pLoGm7wOrPntkt3Y='), or a nonce ('nonce-...') is required to enable inline execution. Navigated to <a href="https://app.roll20.net/editor/" rel="nofollow">https://app.roll20.net/editor/</a> app.js?1443189368:29 70 app.js?1443189368:30 TOUCH SUPPORTED: false app.js?1443189368:30 USING WEBGL ACCELERATION... app.js?1443189368:30 WEBGL STARTUP SUCCESS app.js?1443189368:25 select app.js?1443189368:25 Switch mode to select app.js?1443189368:40 Initializing new dice engine with randomness... app.js?1443189368:40 Using random entropy app.js?1443189368:44 window resize app.js?1443189368:30 Final set zoom! app.js?1443189368:30 UPDATE GL SIZE! app.js?1443189368:30 Final set zoom! tutorial_tips.js:7 tuts loaded app.js?1443189368:36 Final page load. app.js?1443189368:44 Refresh jukebox List! app.js?1443189368:35 Auth'ed. app.js?1443189368:35 Go post auth! app.js?1443189368:35 initial setup app.js?1443189368:35 Got players value... app.js?1443189368:35 joining game... 4app.js?1443189368:33 Full load page! app.js?1443189368:35 We have 4 pages app.js?1443189368:34 Player -K-aEL48mqJNtWHJVelZ is offline... app.js?1443189368:34 1 app.js?1443189368:44 1 app.js?1443189368:35 Deferred finish joining... app.js?1443189368:29 Firebase Online app.js?1443189368:34 I think I should be first? app.js?1443189368:34 FIRST PLAYER: -K-aEL48mqJNtWHJVelZ app.js?1443189368:38 refershing page listings! app.js?1443189368:35 handle page changes app.js?1443189368:35 false app.js?1443189368:38 refershing page listings! app.js?1443189368:35 init active page! app.js?1443189368:33 activate page! app.js?1443189368:33 FULLY ACTIVATE VIEWS FOR PAGE. app.js?1443189368:33 Graphics: 0 app.js?1443189368:33 Paths: 0 app.js?1443189368:33 Reorder by ZORDER app.js?1443189368:36 Scan for new plays! app.js?1443189368:38 refershing page listings! app.js?1443189368:42 initiatlizing video chat app.js?1443189368:42 Connecting to WebRTC app.js?1443189368:44 Refresh jukebox List! app.js?1443189368:42 Connected to session app.js?1443189368:42 Someone just connected. app.js?1443189368:42 It's us? app.js?1443189368:33 Full load page! app.js?1443189368:38 refershing page listings! app.js?1443189368:33 NEED TO UPGRADE ZORDER! app.js?1443189368:33 Upgrading to new ZORDER app.js?1443189368:33 [] app.js?1443189368:33 [] Navigated to <a href="https://app.roll20.net/campaigns/search" rel="nofollow">https://app.roll20.net/campaigns/search</a> /editor/:12 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' https://*.googlesyndication.com https://*.doubleclick.net https://*.googlesyndication.com <a href="https://www.googletagservices.com" rel="nofollow">https://www.googletagservices.com</a> https://*.googlesyndication.com <a href="https://www.google-analytics.com" rel="nofollow">https://www.google-analytics.com</a> https://*.googlesyndication.com <a href="https://d3clqjduf2gvxg.cloudfront.net" rel="nofollow">https://d3clqjduf2gvxg.cloudfront.net</a> https://*.googlesyndication.com https://*.firebaseio.com https://*.googlesyndication.com https://*.opentok.com https://*.googlesyndication.com <a href="http://www.google-analytics.com" rel="nofollow">http://www.google-analytics.com</a>". Either the 'unsafe-inline' keyword, a hash ('sha256-kengO73e9Q5ZmSnlpxrIFNVEPJPZGpp7TOj2zaFcjaM='), or a nonce ('nonce-...') is required to enable inline execution. /editor/:13 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' https://*.googlesyndication.com https://*.doubleclick.net https://*.googlesyndication.com <a href="https://www.googletagservices.com" rel="nofollow">https://www.googletagservices.com</a> https://*.googlesyndication.com <a href="https://www.google-analytics.com" rel="nofollow">https://www.google-analytics.com</a> https://*.googlesyndication.com <a href="https://d3clqjduf2gvxg.cloudfront.net" rel="nofollow">https://d3clqjduf2gvxg.cloudfront.net</a> https://*.googlesyndication.com https://*.firebaseio.com https://*.googlesyndication.com https://*.opentok.com https://*.googlesyndication.com <a href="http://www.google-analytics.com" rel="nofollow">http://www.google-analytics.com</a>". Either the 'unsafe-inline' keyword, a hash ('sha256-C5YNbbSDMtE6nUAc_oefTPBOxP7pLoGm7wOrPntkt3Y='), or a nonce ('nonce-...') is required to enable inline execution. Navigated to <a href="https://app.roll20.net/editor/" rel="nofollow">https://app.roll20.net/editor/</a> app.js?1443189368:29 70 app.js?1443189368:30 TOUCH SUPPORTED: false app.js?1443189368:30 USING WEBGL ACCELERATION... app.js?1443189368:30 WEBGL STARTUP SUCCESS app.js?1443189368:25 select app.js?1443189368:25 Switch mode to select app.js?1443189368:40 Initializing new dice engine with randomness... app.js?1443189368:40 Using random entropy app.js?1443189368:44 window resize app.js?1443189368:30 Final set zoom! app.js?1443189368:30 UPDATE GL SIZE! app.js?1443189368:30 Final set zoom! tutorial_tips.js:7 tuts loaded app.js?1443189368:36 Final page load. app.js?1443189368:44 Refresh jukebox List! app.js?1443189368:35 Auth'ed. app.js?1443189368:35 Go post auth! app.js?1443189368:35 initial setup app.js?1443189368:35 Got players value... app.js?1443189368:35 joining game... 5app.js?1443189368:33 Full load page! app.js?1443189368:35 We have 5 pages app.js?1443189368:34 Player -K-aEL48mqJNtWHJVelZ is offline... app.js?1443189368:34 1 app.js?1443189368:44 1 app.js?1443189368:35 Deferred finish joining... app.js?1443189368:29 Firebase Online app.js?1443189368:34 I think I should be first? app.js?1443189368:34 FIRST PLAYER: -K-aEL48mqJNtWHJVelZ app.js?1443189368:38 refershing page listings! app.js?1443189368:35 handle page changes app.js?1443189368:35 false app.js?1443189368:38 refershing page listings! app.js?1443189368:36 Scan for new plays! app.js?1443189368:35 init active page! app.js?1443189368:33 activate page! app.js?1443189368:33 FULLY ACTIVATE VIEWS FOR PAGE. app.js?1443189368:33 Graphics: 0 app.js?1443189368:33 Paths: 0 app.js?1443189368:33 Reorder by ZORDER app.js?1443189368:38 refershing page listings! app.js?1443189368:42 initiatlizing video chat app.js?1443189368:42 Connecting to WebRTC app.js?1443189368:44 Refresh jukebox List! app.js?1443189368:42 Connected to session app.js?1443189368:42 Someone just connected. app.js?1443189368:42 It's us? app.js?1443189368:35 init active page! app.js?1443189368:33 activate page! app.js?1443189368:33 FULLY ACTIVATE VIEWS FOR PAGE. app.js?1443189368:33 Graphics: 0 app.js?1443189368:33 Paths: 0 app.js?1443189368:33 Reorder by ZORDER app.js?1443189368:38 refershing page listings! app.js?1443189368:25 measure app.js?1443189368:25 Switch mode to measure At this point the measure tool shows zero everywhere.