anchor.diff:      _backgroundTileList.forEach((tile) {
         tile.x = tile.x + vx * time;
         tile.y = tile.y + vy * time;
  -
  -      if (tile.x >= _context.game.stage.sourceWidth) {
  -        tile.x = tile.x - _context.game.stage.sourceWidth - tile.width;
  -      } else if (tile.y >= _context.game.stage.sourceHeight) {
  -        tile.y = tile.y - _context.game.stage.sourceHeight - tile.height;
  +      
  +      if (vx > 0) {
  +        if (tile.x >= _context.game.stage.sourceWidth) {
  +          tile.x = tile.x - _context.game.stage.sourceWidth - tile.width;
  +        }
  +      } else if (vx < 0) {
  +        if(tile.x <= -tile.width){
  +          tile.x = tile.x + _context.game.stage.sourceWidth + tile.width;
  +        }
         }
  +      
  +      if (vy > 0) {
  +        if (tile.y >= _context.game.stage.sourceHeight) {
  +          tile.y = tile.y - _context.game.stage.sourceHeight - tile.height;
  +        }
  +      } else if (vy < 0) {
  +        if(tile.y <= -tile.height){
  +          tile.y = tile.y + _context.game.stage.sourceHeight + tile.height; 
  +        }
  +      }
  +      
       });
   
     }
  
positive.code:             backgroundTileBitmapdata.width).ceil();
          break;
      }
  
      for (int i = -1; i < yTimes; i++) {
        for (int j = -1; j < xTimes; j++) {
          backgroundTileBitmap = new StageXL.Bitmap(backgroundTileBitmapdata);
          backgroundTileBitmap
              ..x = backgroundTileBitmap.width * j
              ..y = backgroundTileBitmap.height * i;
          _backgroundTileList.add(backgroundTileBitmap);
        }
      }
  
negative.code:   static const String SCALE_FULL_Y = "scaleFullY";
    static const String SCALE_FULL_XY = "scaleFullXY";
  
    static const String DEFAULT_REPEAT_MODE = REPEAT_NONE;
    static const String DEFAULT_SCALE_MODE = SCALE_NONE;
  
    /**
  