Yeah so 0ft affects a token but that added 2.5ft doesn't make sense for any radius > 0. I'd add a special case which sets the aura radius to the Math.max(aura radius, half a grid unit), for hex maps do something similar so the minimum aura is a hex for the polygon. here's the relevant source code, I suspect the half grid size error is coming in from r n = Math.floor(parseFloat(o.model.get("aura1_radius")) * window.dpi / a) + r) the radius used in the canvas arc method context .arc( x,y,r,sAngle,eAngle,counterclockwise ); drawAuras: function(e) { var t, n, i = this.model.collection.page, o = this, r = Math.floor(this.graphic.get("width") / 2), a = (Math.floor(this.graphic.get("height") / 2), parseFloat(i.get("scale_number"))); "" != this.model.get("aura1_radius") && (window.is_gm || this.model.get("showplayers_aura1") || this.model.currentPlayerControls() && this.model.get("playersedit_aura1")) && ((t = fabric.Color.fromHex(this.model.get("aura1_color")))._source && (this.model.get("aura1_square") ? (e.fillStyle = t.setAlpha(.35).toRgba(), e.beginPath(), (n = Math.floor(parseFloat(o.model.get("aura1_radius")) * window.dpi / a) + r) < 0 && (n = 0), e.rect(-n, -n, 2 * n, 2 * n), e.closePath(), e.fill()) : (e.fillStyle = t.setAlpha(.35).toRgba(), e.beginPath(), (n = Math.floor(parseFloat(o.model.get("aura1_radius")) * window.dpi / a) + r) < 0 && (n = 0), e.arc(0, 0, n, 0, 2 * Math.PI, !0), e.closePath(), e.fill()))); "" != this.model.get("aura2_radius") && (window.is_gm || this.model.get("showplayers_aura2") || this.model.currentPlayerControls() && this.model.get("playersedit_aura2")) && ((t = fabric.Color.fromHex(this.model.get("aura2_color")))._source && (this.model.get("aura2_square") ? (e.fillStyle = t.setAlpha(.35).toRgba(), e.beginPath(), (n = Math.floor(parseFloat(o.model.get("aura2_radius")) * window.dpi / a) + r) < 0 && (n = 0), e.rect(-n, -n, 2 * n, 2 * n), e.closePath(), e.fill()) : (e.fillStyle = t.setAlpha(.35).toRgba(), e.beginPath(), (n = Math.floor(parseFloat(o.model.get("aura2_radius")) * window.dpi / a) + r) < 0 && (n = 0), e.arc(0, 0, n, 0, 2 * Math.PI, !0), e.closePath(), e.fill()))) },