diff --git a/src/tiledimage.js b/src/tiledimage.js index b45aa47a..e4749fbc 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -967,10 +967,14 @@ function updateLevel( tiledImage, haveDrawn, drawLevel, level, levelOpacity, lev resetCoverage( tiledImage.coverage, level ); - if ( !tiledImage.wrapHorizontal ) { + if ( tiledImage.wrapHorizontal ) { + tileTL.x -= 1; // left invisible column (othervise we will have empty space after scroll at left) + } else { tileBR.x = Math.min( tileBR.x, numberOfTiles.x - 1 ); } - if ( !tiledImage.wrapVertical ) { + if ( tiledImage.wrapVertical ) { + tileTL.y -= 1; // top invisible row (othervise we will have empty space after scroll at top) + } else { tileBR.y = Math.min( tileBR.y, numberOfTiles.y - 1 ); } diff --git a/src/tilesource.js b/src/tilesource.js index 48941848..213cf3bd 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -345,9 +345,11 @@ $.TileSource.prototype = { * @param {OpenSeadragon.Point} point */ getTileAtPoint: function( level, point ) { - var pixel = point.times( this.dimensions.x ).times( this.getLevelScale(level) ), - tx = Math.floor( pixel.x / this.getTileWidth(level) ), - ty = Math.floor( pixel.y / this.getTileHeight(level) ); + var levelScale = this.getLevelScale( level ), + numTiles = this.getNumTiles( level ), + pixel = point.times( this.dimensions.x * levelScale ), + tx = Math.floor( (pixel.x * numTiles.x) / (this.dimensions.x * levelScale) ), + ty = Math.floor( (pixel.y * numTiles.y) / (this.dimensions.y * levelScale) ); return new $.Point( tx, ty ); },