diff --git a/Lib/idlelib/CodeContext.py b/Lib/idlelib/CodeContext.py
index 74d5b70..436206f 100644
--- a/Lib/idlelib/CodeContext.py
+++ b/Lib/idlelib/CodeContext.py
@@ -54,25 +54,68 @@
 
     def toggle_code_context_event(self, event=None):
         if not self.label:
-            self.pad_frame = Tkinter.Frame(self.editwin.top,
-                                           bg=self.bgcolor, border=2,
-                                           relief="sunken")
-            self.label = Tkinter.Label(self.pad_frame,
-                                      text="\n" * (self.context_depth - 1),
-                                      anchor="w", justify="left",
-                                      font=self.textfont,
-                                      bg=self.bgcolor, fg=self.fgcolor,
-                                      border=0,
-                                      width=1, # Don't request more than we get
-                                      )
-            self.label.pack(side="top", fill="x", expand=True,
-                            padx=4, pady=0)
-            self.pad_frame.pack(side="top", fill="x", expand=False,
-                                padx=0, pady=0,
-                                after=self.editwin.status_bar)
+            # The following code attempts to figure out the required border
+            # width and vertical padding required for the CodeContext widget
+            # to be perfectly aligned with the text in the main Text widget.
+            # This is done by retrieving the appropriate attributes from the
+            # editwin.text and editwin.text_frame widgets.
+            #
+            # All values are passed through int(str(<value>)), since some
+            # values may be pixel objects, which can't simply be added added
+            # to ints.
+            #
+            # This code is considered somewhat unstable since it relies on
+            # some of Tk's inner workings. However its effect is merely
+            # cosmetic; failure will only cause the CodeContext text to be
+            # somewhat misaligned with the text in the main Text widget.
+            #
+            # To avoid possible errors, all references to the inner workings
+            # of Tk are executed inside try/except blocks.
+            
+            widgets_for_width_calc = self.editwin.text, self.editwin.text_frame
+
+            # calculate the required vertical padding
+            padx = 0
+            for widget in widgets_for_width_calc:
+                try:
+                    # retrieve the "padx" attribte from widget's pack info
+                    padx += int(str( widget.pack_info()['padx'] ))
+                except:
+                    pass
+                try:
+                    # retrieve the widget's "padx" attribte
+                    padx += int(str( widget.cget('padx') ))
+                except:
+                    pass
+
+            # calculate the required border width
+            border_width = 0
+            for widget in widgets_for_width_calc:
+                try:
+                    # retrieve the widget's "border" attribte
+                    border_width += int(str( widget.cget('border') ))
+                except:
+                    pass
+
+            self.label = Tkinter.Label(self.editwin.top,
+                                       text="\n" * (self.context_depth - 1),
+                                       anchor="w", justify="left",
+                                       font=self.textfont,
+                                       bg=self.bgcolor, fg=self.fgcolor,
+                                       width=1, #don't request more than we get
+                                       padx=padx, #line up with text widget
+                                       border=border_width, #match border width
+                                       relief="sunken",
+                                       )
+
+            # CodeContext's label widget is packed before and above the
+            # text_frame widget, thus ensuring that it will appear directly
+            # above it.
+            self.label.pack(side="top", fill="x", expand=False,
+                            before=self.editwin.text_frame)
+            
         else:
             self.label.destroy()
-            self.pad_frame.destroy()
             self.label = None
         idleConf.SetOption("extensions", "CodeContext", "visible",
                            str(self.label is not None))
diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py
index 6b8ab63..b69f06d 100644
--- a/Lib/idlelib/EditorWindow.py
+++ b/Lib/idlelib/EditorWindow.py
@@ -102,8 +102,8 @@
             self.top.instance_dict = {}
         self.recent_files_path = os.path.join(idleConf.GetUserCfgDir(),
                 'recent-files.lst')
-        self.vbar = vbar = Scrollbar(top, name='vbar')
         self.text_frame = text_frame = Frame(top)
+        self.vbar = vbar = Scrollbar(text_frame, name='vbar')
         self.width = idleConf.GetOption('main','EditorWindow','width')
         self.text = text = MultiCallCreator(Text)(
                 text_frame, name='text', padx=5, wrap='none',
