diff --git a/lib/src/io.dart b/lib/src/io.dart
index f0f83c954bf804325d56259a2a6a098cf205f66a..659661fe547d274b4d09107d482377298227b53c 100644
--- a/lib/src/io.dart
+++ b/lib/src/io.dart
@@ -592,12 +592,19 @@ Future _doProcess(Function fn, String executable, List<String> args,
     executable = "cmd";
   }
 
+  var env = null;
+  if (environment != null) {
+    env = new Map.from(Platform.environment);
+    environment.forEach((key, value) => env[key] = value);
+  }
+
+
   log.process(executable, args);
 
   return fn(executable,
             args,
             workingDirectory: workingDir,
-            environment: environment);
+            environment: env);
 }
 
 /// Wraps [input] to provide a timeout. If [input] completes before