diff --git a/pkgs/yaml/CHANGELOG.md b/pkgs/yaml/CHANGELOG.md
index c0b3063..143e1c2 100644
--- a/pkgs/yaml/CHANGELOG.md
+++ b/pkgs/yaml/CHANGELOG.md
@@ -1,8 +1,3 @@
-## 2.1.16
-
-* Improve the `span` associated with `YamlScalar` values with trailing
-  whitespace.
-
 ## 2.1.15
 
 * Set max SDK version to `<3.0.0`, and adjust other dependencies.
@@ -115,10 +110,12 @@
   constructors make it possible to use the same API to access non-YAML data as
   YAML data.
 
-* Make `YamlException` inherit from source_map's `SpanFormatException`. This
+* Make `YamlException` inherit from source_map's [`SpanFormatException`][]. This
   improves the error formatting and allows callers access to source range
   information.
 
+[SpanFormatException]: (http://www.dartdocs.org/documentation/source_maps/0.9.2/index.html#source_maps/source_maps.SpanFormatException)
+
 ## 1.0.0+1
 
 * Fix a variable name typo.
diff --git a/pkgs/yaml/lib/src/parser.dart b/pkgs/yaml/lib/src/parser.dart
index 0971e7f..bffaa17 100644
--- a/pkgs/yaml/lib/src/parser.dart
+++ b/pkgs/yaml/lib/src/parser.dart
@@ -303,22 +303,7 @@
 
       _state = _states.removeLast();
       _scanner.scan();
-
-      span = span.expand(token.span);
-      if (span.text != token.value) {
-        // If the only difference between the span and the token is trailing
-        // whitespace
-        if (span.text.trimRight() == token.value) {
-          span = span.file.span(
-            span.start.offset,
-            // TODO(kevmoo): The length of `token.value` may be incorrect
-            // with some UNICODE values. Find a more clean solution.
-            span.start.offset + token.value.length,
-          );
-        }
-      }
-
-      return ScalarEvent(span, token.value, token.style,
+      return ScalarEvent(span.expand(token.span), token.value, token.style,
           anchor: anchor, tag: tag);
     }
 
diff --git a/pkgs/yaml/pubspec.yaml b/pkgs/yaml/pubspec.yaml
index d0fb672..da41f3a 100644
--- a/pkgs/yaml/pubspec.yaml
+++ b/pkgs/yaml/pubspec.yaml
@@ -1,5 +1,5 @@
 name: yaml
-version: 2.1.16
+version: 2.1.16-dev
 
 description: A parser for YAML.
 author: Dart Team <misc@dartlang.org>
diff --git a/pkgs/yaml/test/span_test.dart b/pkgs/yaml/test/span_test.dart
index 09e461c..7ef61d3 100644
--- a/pkgs/yaml/test/span_test.dart
+++ b/pkgs/yaml/test/span_test.dart
@@ -8,6 +8,13 @@
 import 'package:test/test.dart';
 import 'package:yaml/yaml.dart';
 
+void _expectSpan(SourceSpan source, String expected) {
+  final result = source.message('message');
+  printOnFailure("r'''\n$result'''");
+
+  expect(result, expected);
+}
+
 void main() {
   YamlMap yaml;
 
@@ -26,6 +33,7 @@
     _expectSpan(
       yaml.nodes['num'].span,
       r'''
+line 2, column 9: message
   ╷
 2 │  "num": 42,
   │         ^^
@@ -37,6 +45,7 @@
     _expectSpan(
       yaml.nodes['null'].span,
       r'''
+line 7, column 10: message
   ╷
 7 │  "null": null
   │          ^^^^
@@ -55,6 +64,7 @@
       _expectSpan(
         nestedMap.nodes['null'].span,
         r'''
+line 4, column 11: message
   ╷
 4 │   "null": null,
   │           ^^^^
@@ -66,15 +76,14 @@
       _expectSpan(
         nestedMap.nodes['num'].span,
         r'''
+line 5, column 10: message
   ╷
-5 │   "num": 42
-  │          ^^
+5 │     "num": 42
+  │ ┌──────────^
+6 │ │  },
+  │ └─^
   ╵''',
       );
     });
   });
 }
-
-void _expectSpan(SourceSpan source, String expected) {
-  expect(source.highlight(), expected);
-}
