diff --git a/pkgs/stack_trace/lib/src/frame.dart b/pkgs/stack_trace/lib/src/frame.dart
index fdf4fe0..5f0777c 100644
--- a/pkgs/stack_trace/lib/src/frame.dart
+++ b/pkgs/stack_trace/lib/src/frame.dart
@@ -9,6 +9,7 @@
 import 'package:pathos/path.dart' as path;
 
 import 'trace.dart';
+import 'utils.dart';
 
 final _nativeFrameRegExp = new RegExp(
     r'^#\d+\s+([^\s].*) \((.+):(\d+):(\d+)\)$');
@@ -42,7 +43,7 @@
   String get library {
     // TODO(nweiz): handle relative URIs here as well once pathos supports that.
     if (uri.scheme != 'file') return uri.toString();
-    return path.relative(uri.path);
+    return path.relative(fileUriToPath(uri));
   }
 
   /// A human-friendly description of the code location.
diff --git a/pkgs/stack_trace/test/frame_test.dart b/pkgs/stack_trace/test/frame_test.dart
index 5c5a32e..c65f395 100644
--- a/pkgs/stack_trace/test/frame_test.dart
+++ b/pkgs/stack_trace/test/frame_test.dart
@@ -8,6 +8,7 @@
 import 'dart:uri';
 
 import 'package:pathos/path.dart' as path;
+import 'package:stack_trace/src/utils.dart';
 import 'package:stack_trace/stack_trace.dart';
 import 'package:unittest/unittest.dart';
 
@@ -42,7 +43,7 @@
     // TODO(nweiz): use URL-style paths when such a thing exists.
     var builder = new path.Builder(style: path.Style.posix);
     expect(builder.basename(frame.uri.path), equals('frame_test.dart'));
-    expect(frame.line, equals(16));
+    expect(frame.line, equals(17));
     expect(frame.column, equals(5));
     expect(frame.member, equals('getStackFrame'));
   });
@@ -113,7 +114,7 @@
     });
 
     test('returns the relative path for file URIs', () {
-      var uri = _pathToFileUri(path.join('foo', 'bar.dart'));
+      var uri = pathToFileUri(path.join('foo', 'bar.dart'));
       expect(new Frame.parse('#0 Foo ($uri:0:0)').library,
           equals(path.join('foo', 'bar.dart')));
     });
@@ -125,7 +126,7 @@
       expect(new Frame.parse('#0 Foo '
               '(http://dartlang.org/thing.dart:5:10)').location,
           equals('http://dartlang.org/thing.dart 5:10'));
-      var uri = _pathToFileUri(path.join('foo', 'bar.dart'));
+      var uri = pathToFileUri(path.join('foo', 'bar.dart'));
       expect(new Frame.parse('#0 Foo ($uri:1:2)').location,
           equals('${path.join('foo', 'bar.dart')} 1:2'));
     });
@@ -158,9 +159,3 @@
     });
   });
 }
-
-String _pathToFileUri(String pathString) {
-  pathString = path.absolute(pathString);
-  if (Platform.operatingSystem != 'windows') return 'file://$pathString';
-  return 'file:///${pathString.replaceAll("\\", "/")}';
-}
diff --git a/pkgs/stack_trace/test/trace_test.dart b/pkgs/stack_trace/test/trace_test.dart
index 2cbe48d..ed8fa6b 100644
--- a/pkgs/stack_trace/test/trace_test.dart
+++ b/pkgs/stack_trace/test/trace_test.dart
@@ -8,6 +8,7 @@
 import 'dart:uri';
 
 import 'package:pathos/path.dart' as path;
+import 'package:stack_trace/src/utils.dart';
 import 'package:stack_trace/stack_trace.dart';
 import 'package:unittest/unittest.dart';
 
@@ -91,7 +92,7 @@
   });
 
   test('.toString() nicely formats the stack trace', () {
-    var uri = _pathToFileUri(path.join('foo', 'bar.dart'));
+    var uri = pathToFileUri(path.join('foo', 'bar.dart'));
     var trace = new Trace.parse('''
 #0      Foo._bar ($uri:42:21)
 #1      zip.<anonymous closure>.zap (dart:async:0:2)
@@ -133,9 +134,3 @@
 '''));
   });
 }
-
-String _pathToFileUri(String pathString) {
-  pathString = path.absolute(pathString);
-  if (Platform.operatingSystem != 'windows') return 'file://$pathString';
-  return 'file:///${pathString.replaceAll("\\", "/")}';
-}
