diff --git a/b_asic/GUI/drag_button.py b/b_asic/GUI/drag_button.py
index e31c6b5a27ef887f3f5699b124d5241aee8d8d8a..6d8b4ad77031fe94386d9205754ff51f3dabc26d 100644
--- a/b_asic/GUI/drag_button.py
+++ b/b_asic/GUI/drag_button.py
@@ -21,11 +21,11 @@ class DragButton(QPushButton):
         self.operation_path_name = operation_path_name
         self.clicked = 0
         self.pressed = False
+        self._mouse_press_pos = None
+        self._mouse_move_pos = None
         super(DragButton, self).__init__(self._window)
 
     def mousePressEvent(self, event):
-        self._mouse_press_pos = None
-        self._mouse_move_pos = None
 
         if event.button() == Qt.LeftButton:
             self._mouse_press_pos = event.globalPos()
@@ -60,6 +60,9 @@ class DragButton(QPushButton):
         if event.buttons() == Qt.LeftButton:
             cur_pos = self.mapToGlobal(self.pos())
             global_pos = event.globalPos()
+            if self._mouse_move_pos is None:
+                self._mouse_move_pos = global_pos
+
             diff = global_pos - self._mouse_move_pos
             new_pos = self.mapFromGlobal(cur_pos + diff)
             self.move(new_pos)
diff --git a/b_asic/GUI/improved_main_window.py b/b_asic/GUI/improved_main_window.py
index 2696de2539a5b79a2a8b0e355eab4026d4c6c4d6..5b02231c89807a6b38cfed6ae9e1a296b3432154 100644
--- a/b_asic/GUI/improved_main_window.py
+++ b/b_asic/GUI/improved_main_window.py
@@ -22,10 +22,13 @@ from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QLabel, QAction,
 QStatusBar, QMenuBar, QLineEdit, QPushButton, QSlider, QScrollArea, QVBoxLayout,\
 QHBoxLayout, QDockWidget, QToolBar, QMenu, QLayout, QSizePolicy, QListWidget,\
 QListWidgetItem, QGraphicsView, QGraphicsScene, QShortcut
-from PyQt5.QtCore import Qt, QSize
+from PyQt5.QtCore import Qt, QSize, QSize
 from PyQt5.QtGui import QIcon, QFont, QPainter, QPen, QBrush, QKeySequence
 
 
+MIN_WIDTH_SCENE = 600
+MIN_HEIGHT_SCENE = 520
+
 @decorate_class(handle_error)
 class MainWindow(QMainWindow):
     def __init__(self):
@@ -58,11 +61,21 @@ class MainWindow(QMainWindow):
         self.ui.exit_menu.triggered.connect(self.exit_app)
         self.create_graphics_view()
 
+    def resizeEvent(self, event):
+        oldSize = event.oldSize()
+        if event.oldSize() == QSize(-1, -1):
+            oldSize = event.size()
+
+        newWidth = oldSize.width() * (oldSize.width() / event.size().width())
+        newHeight = oldSize.height() * (oldSize.height() / event.size().height())
+        self.graphic_view.setGeometry(250, 40, newWidth - 300, newHeight - 100)
+        super(MainWindow, self).resizeEvent(event)
+
     def create_graphics_view(self):
-        self.scene = QGraphicsScene()
+        self.scene = QGraphicsScene(self)
         self.graphic_view = QGraphicsView(self.scene, self)
         self.graphic_view.setRenderHint(QPainter.Antialiasing)
-        self.graphic_view.setGeometry(250, 40, 600, 520)
+        self.graphic_view.setGeometry(0, 0, self.width(), self.height())
         self.graphic_view.setDragMode(QGraphicsView.ScrollHandDrag)
 
     def wheelEvent(self, event):
@@ -187,5 +200,6 @@ class MainWindow(QMainWindow):
 if __name__ == "__main__":
     app = QApplication(sys.argv)
     window = MainWindow()
+    window.setMinimumSize(MIN_WIDTH_SCENE, MIN_HEIGHT_SCENE)
     window.show()
     sys.exit(app.exec_())
diff --git a/b_asic/GUI/port_button.py b/b_asic/GUI/port_button.py
index d9fd2b135d1b11c9677be8ee814d95fe01d8007a..af2e7ef6de2df343334305f0fce63cc313c574d2 100644
--- a/b_asic/GUI/port_button.py
+++ b/b_asic/GUI/port_button.py
@@ -20,7 +20,6 @@ class PortButton(QPushButton):
         menu.exec_(self.cursor().pos())
 
     def mousePressEvent(self, event):
-        
         if event.button() == Qt.LeftButton:
             self.clicked += 1
             if self.clicked == 1:
@@ -29,11 +28,11 @@ class PortButton(QPushButton):
                 self.window.pressed_ports.append(self)
             elif self.clicked == 2:
                 self.setStyleSheet("background-color: white")
-                self.pressed = False                
+                self.pressed = False
                 self.clicked = 0
                 self.window.pressed_ports.remove(self)
         super(PortButton, self).mousePressEvent(event)
-            
+
     def mouseReleaseEvent(self, event):
         super(PortButton, self).mouseReleaseEvent(event)