diff --git a/src/Level/Layer.cpp b/src/Level/Layer.cpp
index d424b3a..43ec8ed 100644
--- a/src/Level/Layer.cpp
+++ b/src/Level/Layer.cpp
@@ -22,16 +22,16 @@ void Layer::Update(float dt) {
 }
 
 void Layer::Draw(int xOffset, int yOffset) {
-  int xOffsetTiles = xOffset / _width;
-  int yOffsetTiles = yOffset / _height;
+  int xOffsetTiles = xOffset / _tileWidth;
+  int yOffsetTiles = yOffset / _tileHeight;
 
-  int minX = std::max(0, xOffsetTiles - 1);
-  int maxX = std::min(_width, xOffsetTiles + (WINDOW_WIDTH / (int)_tileWidth) + 1);
-  int minY = std::max(0, yOffsetTiles - 1);
-  int maxY = std::min(_height, yOffsetTiles + (WINDOW_HEIGHT / (int)_tileHeight) + 1);
+  int minX = std::max(xOffsetTiles, 0);
+  int maxX = std::min(_width, xOffsetTiles + WINDOW_WIDTH / (int)_tileWidth + 2);
+  int minY = std::max(yOffsetTiles, 0);
+  int maxY = std::min(_height, yOffsetTiles + WINDOW_HEIGHT / (int)_tileHeight + 2);
   
-  for(int x = 0; x < _width; x++) {
-    for(int y = 0; y < _height; y++) {
+  for(int x = minX; x < maxX; x++) {
+    for(int y = minY; y < maxY; y++) {
       MapTile& tile = GetTile(x, y);
       if(tile.tileset != NULL) {
         tile.tileset->DrawTile(tile.id, Vec2((float)x * _tileWidth, (float)y * _tileHeight));
diff --git a/src/Main/Game.cpp b/src/Main/Game.cpp
index ac62002..55d429c 100644
--- a/src/Main/Game.cpp
+++ b/src/Main/Game.cpp
@@ -81,7 +81,6 @@ void Game::Render(void) {
 void Game::Shutdown(void) {
   Debug::logger->message("\n ----- Cleaning Engine -----");
   delete _player;
-  delete _NPC;
   delete _level;
 }