diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index c44e2b1..64dc748 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -10,16 +10,6 @@
 
 import traceback
 
-try:
-    raise KeyError
-except KeyError:
-    type_, value, tb = sys.exc_info()
-    file_ = StringIO()
-    traceback_print(tb, file_)
-    example_traceback = file_.getvalue()
-else:
-    raise Error("unable to create test traceback string")
-
 
 class SyntaxTracebackCases(unittest.TestCase):
     # For now, a very minimal set of tests.  I want to be sure that
@@ -158,9 +148,24 @@
 
 class TracebackFormatTests(unittest.TestCase):
 
-    def test_traceback_indentation(self):
+    def test_traceback_format(self):
+        try:
+            raise KeyError('blah')
+        except KeyError:
+            type_, value, tb = sys.exc_info()
+            traceback_fmt = 'Traceback (most recent call last):\n' + \
+                            ''.join(traceback.format_tb(tb))
+            file_ = StringIO()
+            traceback_print(tb, file_)
+            python_fmt  = file_.getvalue()
+        else:
+            raise Error("unable to create test traceback string")
+
+        # Make sure that Python and the traceback module format the same thing
+        self.assertEquals(traceback_fmt, python_fmt)
+
         # Make sure that the traceback is properly indented.
-        tb_lines = example_traceback.splitlines()
+        tb_lines = python_fmt.splitlines()
         self.assertEquals(len(tb_lines), 3)
         banner, location, source_line = tb_lines
         self.assert_(banner.startswith('Traceback'))
diff --git a/Lib/traceback.py b/Lib/traceback.py
index cb913ee..571ff57 100644
--- a/Lib/traceback.py
+++ b/Lib/traceback.py
@@ -63,7 +63,7 @@
         filename = co.co_filename
         name = co.co_name
         _print(file,
-               '  File "%s", line %d, in %s' % (filename,lineno,name))
+               '  File "%s", line %d, in %s' % (filename, lineno, name))
         linecache.checkcache(filename)
         line = linecache.getline(filename, lineno, f.f_globals)
         if line: _print(file, '    ' + line.strip())
@@ -159,9 +159,8 @@
             _print(file, 'Traceback (most recent call last):')
             print_tb(tb, limit, file)
         lines = format_exception_only(type(value), value)
-        for line in lines[:-1]:
-            _print(file, line, ' ')
-        _print(file, lines[-1], '')
+        for line in lines:
+            _print(file, line, '')
 
 def format_exception(etype, value, tb, limit=None, chain=True):
     """Format a stack trace and the exception information.
diff --git a/Misc/NEWS b/Misc/NEWS
index 38cc777..27438ec 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -327,6 +327,8 @@
 Library
 -------
 
+- Issue 1326077: fix the formatting of SyntaxErrors by the traceback module.
+
 - Issue #1665206 (partially): Move imports in cgitb to the top of the module
   instead of performing them in functions. Helps prevent import deadlocking in
   threads.
