diff --git a/binding.gyp b/binding.gyp
index 67a8d6c..1a3a9c8 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -21,7 +21,7 @@
   'targets': [
     {
       'target_name': 'canvas',
-      'include_dirs': ["<!(node -p -e \"require('path').relative('.', require('path').dirname(require.resolve('nan')))\")"],
+      'include_dirs': ["<!(node -e \"require('nan')\")"],
       'sources': [
         'src/Canvas.cc',
         'src/CanvasGradient.cc',
diff --git a/package.json b/package.json
index bbfe41e..aae3c8e 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,7 @@
      "test": "make test"
  }
  , "dependencies": {
-     "nan": "~0.4.1"
+     "nan": "~0.6.0"
  }
  , "devDependencies": {
      "express": "3.0"
diff --git a/src/Canvas.cc b/src/Canvas.cc
index f1be156..f825aec 100644
--- a/src/Canvas.cc
+++ b/src/Canvas.cc
@@ -211,7 +211,7 @@ Canvas::EIO_AfterToBuffer(eio_req *req) {
   } else {
     Local<Object> buf = NanNewBufferHandle((char*)closure->data, closure->len);
     memcpy(Buffer::Data(buf), closure->data, closure->len);
-    Local<Value> argv[2] = { Local<Value>::New(Null()), buf };
+    Local<Value> argv[2] = { NanNewLocal<Value>(Null()), buf };
     closure->pfn->Call(2, argv);
   }
 
@@ -348,7 +348,7 @@ streamPNG(void *c, const uint8_t *data, unsigned len) {
   closure_t *closure = (closure_t *) c;
   Local<Object> buf = NanNewBufferHandle((char *)data, len);
   Local<Value> argv[3] = {
-      Local<Value>::New(Null())
+      NanNewLocal<Value>(Null())
     , buf
     , Integer::New(len) };
   MakeCallback(Context::GetCurrent()->Global(), closure->fn, 3, argv);
@@ -423,8 +423,8 @@ NAN_METHOD(Canvas::StreamPNGSync) {
     MakeCallback(Context::GetCurrent()->Global(), closure.fn, 1, argv);
   } else {
     Local<Value> argv[3] = {
-        Local<Value>::New(Null())
-      , Local<Value>::New(Null())
+        NanNewLocal<Value>(Null())
+      , NanNewLocal<Value>(Null())
       , Integer::New(0) };
     MakeCallback(Context::GetCurrent()->Global(), closure.fn, 3, argv);
   }
diff --git a/src/JPEGStream.h b/src/JPEGStream.h
index 34e0c27..3f21a9c 100644
--- a/src/JPEGStream.h
+++ b/src/JPEGStream.h
@@ -34,8 +34,8 @@ empty_closure_output_buffer(j_compress_ptr cinfo){
   closure_destination_mgr *dest = (closure_destination_mgr *) cinfo->dest;
   Local<Object> buf = NanNewBufferHandle((char *)dest->buffer, dest->bufsize);
   Local<Value> argv[3] = {
-      Local<Value>::New(Null())
-    , Local<Value>::New(buf)
+      NanNewLocal<Value>(Null())
+    , NanNewLocal<Value>(buf)
     , Integer::New(dest->bufsize)
   };
   dest->closure->fn->Call(Context::GetCurrent()->Global(), 3, argv);
@@ -53,8 +53,8 @@ term_closure_destination(j_compress_ptr cinfo){
   Local<Object> buf = NanNewBufferHandle((char *)dest->buffer, remaining);
 
   Local<Value> data_argv[3] = {
-      Local<Value>::New(Null())
-    , Local<Value>::New(buf)
+      NanNewLocal<Value>(Null())
+    , NanNewLocal<Value>(buf)
     , Integer::New(remaining)
   };
 
@@ -62,8 +62,8 @@ term_closure_destination(j_compress_ptr cinfo){
 
   // emit "end"
   Local<Value> end_argv[3] = {
-      Local<Value>::New(Null())
-    , Local<Value>::New(Null())
+      NanNewLocal<Value>(Null())
+    , NanNewLocal<Value>(Null())
     , Integer::New(0)
   };