diff --git a/Lib/doctest.py b/Lib/doctest.py
index 97bc053..eee2f51 100644
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -209,8 +209,11 @@
         filename = _module_relative_path(package, filename)
         if hasattr(package, '__loader__'):
             if hasattr(package.__loader__, 'get_data'):
-                return (package.__loader__.get_data(filename).decode(encoding),
-                        filename)
+                file_contents = package.__loader__.get_data(filename)
+                file_contents = file_contents.decode(encoding)
+                # get_data() opens files as 'rb', so one must do the equivalent
+                # conversion as universal newlines would do.
+                return file_contents.replace(os.linesep, '\n'), filename
     return open(filename, encoding=encoding).read(), filename
 
 def _indent(s, indent=4):
diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py
index be2ffe2..3b89097 100644
--- a/Lib/test/test_doctest.py
+++ b/Lib/test/test_doctest.py
@@ -1912,6 +1912,24 @@
          >>> suite.run(unittest.TestResult())
          <unittest.TestResult run=3 errors=0 failures=2>
 
+       Support for using a package's __loader__.get_data() is also
+       provided.
+
+         >>> import unittest, pkgutil, test
+         >>> if not hasattr(test, '__loader__'):
+         ...     test.__loader__ = pkgutil.get_loader(test)
+         ...     added_loader = True
+         >>> try:
+         ...     suite = doctest.DocFileSuite('test_doctest.txt',
+         ...                                  'test_doctest2.txt',
+         ...                                  'test_doctest4.txt',
+         ...                                  package='test')
+         ...     suite.run(unittest.TestResult())
+         ... finally:
+         ...     if added_loader:
+         ...         del test.__loader__
+         <unittest.TestResult run=3 errors=0 failures=2>
+
        '/' should be used as a path separator.  It will be converted
        to a native separator at run time:
 
@@ -1973,8 +1991,6 @@
 
        And, you can provide setUp and tearDown functions:
 
-       You can supply setUp and teatDoen functions:
-
          >>> def setUp(t):
          ...     import test.test_doctest
          ...     test.test_doctest.sillySetup = True
