diff --git a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/header/tag/TagPanel.kt b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/header/tag/TagPanel.kt
index 92d5ceee..7aa3b854 100644
--- a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/header/tag/TagPanel.kt
+++ b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/header/tag/TagPanel.kt
@@ -9,7 +9,12 @@ import com.intellij.util.IconUtil
 import com.intellij.util.ui.JBUI
 import ee.carlrobert.codegpt.ui.textarea.PromptTextField
 import ee.carlrobert.codegpt.ui.textarea.header.PaintUtil
-import java.awt.*
+import java.awt.Cursor
+import java.awt.Dimension
+import java.awt.Graphics
+import java.awt.GridBagConstraints
+import java.awt.GridBagLayout
+import javax.swing.BorderFactory
 import javax.swing.Icon
 import javax.swing.JButton
 import javax.swing.JToggleButton
@@ -46,7 +51,7 @@ abstract class TagPanel(
         val closeButtonWidth = if (closeButton.isVisible) closeButton.preferredSize.width else 0
         return Dimension(
             label.preferredSize.width + closeButtonWidth + insets.left + insets.right,
-            20
+            JBUI.scale(20)
         )
     }
 
@@ -134,8 +139,13 @@ abstract class TagPanel(
                 onClose()
             }
 
-            preferredSize = Dimension(Close.iconWidth, Close.iconHeight)
-            border = JBUI.Borders.emptyLeft(4)
+            val iconSize = Dimension(Close.iconWidth, Close.iconHeight)
+            preferredSize = iconSize
+            minimumSize = iconSize
+            maximumSize = iconSize
+
+            border = BorderFactory.createEmptyBorder(0, 4, 0, 4)
+
             isContentAreaFilled = false
             toolTipText = "Remove"
             rolloverIcon = AllIcons.Actions.CloseHovered
diff --git a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/suggestion/SuggestionsPopupManager.kt b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/suggestion/SuggestionsPopupManager.kt
index 0fc0a318..b8384818 100644
--- a/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/suggestion/SuggestionsPopupManager.kt
+++ b/src/main/kotlin/ee/carlrobert/codegpt/ui/textarea/suggestion/SuggestionsPopupManager.kt
@@ -4,8 +4,20 @@ import com.intellij.openapi.project.Project
 import com.intellij.openapi.ui.popup.JBPopup
 import com.intellij.vcsUtil.showAbove
 import ee.carlrobert.codegpt.ui.textarea.UserInputPanel
-import ee.carlrobert.codegpt.ui.textarea.suggestion.item.*
-import kotlinx.coroutines.*
+import ee.carlrobert.codegpt.ui.textarea.suggestion.item.DocumentationSuggestionGroupItem
+import ee.carlrobert.codegpt.ui.textarea.suggestion.item.FileSuggestionGroupItem
+import ee.carlrobert.codegpt.ui.textarea.suggestion.item.FolderSuggestionGroupItem
+import ee.carlrobert.codegpt.ui.textarea.suggestion.item.GitSuggestionGroupItem
+import ee.carlrobert.codegpt.ui.textarea.suggestion.item.PersonaSuggestionGroupItem
+import ee.carlrobert.codegpt.ui.textarea.suggestion.item.SuggestionActionItem
+import ee.carlrobert.codegpt.ui.textarea.suggestion.item.SuggestionGroupItem
+import ee.carlrobert.codegpt.ui.textarea.suggestion.item.SuggestionItem
+import ee.carlrobert.codegpt.ui.textarea.suggestion.item.WebSearchActionItem
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
 import java.awt.Dimension
 import java.awt.Point
 import javax.swing.DefaultListModel
@@ -20,7 +32,7 @@ class SuggestionsPopupManager(
     private val scope = CoroutineScope(Dispatchers.Default + SupervisorJob())
     private var selectedActionGroup: SuggestionGroupItem? = null
     private var popup: JBPopup? = null
-    private var originalLocation: Point? = null
+
     private val listModel = DefaultListModel<SuggestionItem>().apply {
         addListDataListener(object : ListDataListener {
             override fun intervalAdded(e: ListDataEvent) = adjustPopupSize()
@@ -44,12 +56,12 @@ class SuggestionsPopupManager(
         popup = SuggestionsPopupBuilder()
             .setPreferableFocusComponent(component)
             .setOnCancel {
-                originalLocation = null
                 true
             }
             .build(list)
+
         popup?.showAbove(userInputPanel)
-        originalLocation = userInputPanel.locationOnScreen
+
         reset(true)
         selectNext()
     }
@@ -117,9 +129,18 @@ class SuggestionsPopupManager(
         list.repaint()
 
         popup?.size = Dimension(list.preferredSize.width, list.preferredSize.height + 32)
-        originalLocation?.let { original ->
-            val newY = original.y - list.preferredSize.height - 32
-            popup?.setLocation(Point(original.x, maxOf(newY, 0)))
-        }
+
+        val bounds = userInputPanel.bounds
+        val locationOnScreen = userInputPanel.locationOnScreen
+
+        val deviceConfiguration = userInputPanel.graphicsConfiguration
+        val screenBounds = deviceConfiguration.bounds
+
+        val popupSize = popup?.size ?: Dimension(0, 0)
+        val newY = locationOnScreen.y - popupSize.height
+
+        val adjustedY = if (newY < screenBounds.y) locationOnScreen.y + bounds.height else newY
+
+        popup?.setLocation(Point(locationOnScreen.x, adjustedY))
     }
 }