diff --git a/CHANGELOG.md b/CHANGELOG.md
index cdd3b36..e8f1125 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,4 @@
 # 0.1.1-dev
 
-* Support formatting enums.
\ No newline at end of file
+* Support formatting enums (#120).
+* Handle Windows line endings in multiline strings (#126).
\ No newline at end of file
diff --git a/lib/src/source_visitor.dart b/lib/src/source_visitor.dart
index 540735d..0a228f7 100644
--- a/lib/src/source_visitor.dart
+++ b/lib/src/source_visitor.dart
@@ -15,6 +15,8 @@
 
 /// An AST visitor that drives formatting heuristics.
 class SourceVisitor implements AstVisitor {
+  final DartFormatter _formatter;
+
   /// The writer to which the output lines are written.
   final LineWriter _writer;
 
@@ -34,8 +36,9 @@
 
   /// Initialize a newly created visitor to write source code representing
   /// the visited nodes to the given [writer].
-  SourceVisitor(DartFormatter formatter, this._lineInfo, SourceCode source)
-      : _source = source,
+  SourceVisitor(formatter, this._lineInfo, SourceCode source)
+      : _formatter = formatter,
+        _source = source,
         _writer = new LineWriter(formatter, source);
 
   /// Runs the visitor on [node], formatting its contents.
@@ -1589,7 +1592,7 @@
   /// can handle them correctly.
   void _writeStringLiteral(String string, int offset) {
     // Split each line of a multiline string into separate chunks.
-    var lines = string.split("\n");
+    var lines = string.split(_formatter.lineEnding);
 
     _writeText(lines.first, offset);
     offset += lines.first.length;
diff --git a/test/formatter_test.dart b/test/formatter_test.dart
index e35c6d3..4d46828 100644
--- a/test/formatter_test.dart
+++ b/test/formatter_test.dart
@@ -117,22 +117,32 @@
   group('line endings', () {
     test('uses given line ending', () {
       expect(new DartFormatter(lineEnding: "%").format("var i = 1;"),
-        equals("var i = 1;%"));
+          equals("var i = 1;%"));
     });
 
     test('infers \\r\\n if the first newline uses that', () {
       expect(new DartFormatter().format("var\r\ni\n=\n1;\n"),
-        equals("var i = 1;\r\n"));
+          equals("var i = 1;\r\n"));
     });
 
     test('infers \\n if the first newline uses that', () {
       expect(new DartFormatter().format("var\ni\r\n=\r\n1;\r\n"),
-        equals("var i = 1;\n"));
+          equals("var i = 1;\n"));
     });
 
     test('defaults to \\n if there are no newlines', () {
       expect(new DartFormatter().format("var i =1;"),
-        equals("var i = 1;\n"));
+          equals("var i = 1;\n"));
+    });
+
+    test('handles Windows line endings in multiline strings', () {
+      expect(new DartFormatter(lineEnding: "\r\n").formatStatement(
+          '  """first\r\n'
+          'second\r\n'
+          'third"""  ;'), equals(
+          '"""first\r\n'
+          'second\r\n'
+          'third""";'));
     });
   });
 }
