diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py
index 683382d6bcb464540e62e0832c9a950a41b01d76..19cb0ea29bbaef14d5d2becd8d3d5848623a77bd 100644
--- a/pyopencl/__init__.py
+++ b/pyopencl/__init__.py
@@ -381,6 +381,7 @@ class Program(object):
         if arg2 is None:
             # 1-argument form: program
             self._prg = arg1
+            self._context = self._prg.context
 
         elif arg3 is None:
             # 2-argument form: context, source
@@ -422,7 +423,6 @@ class Program(object):
                     stacklevel=3)
 
             self._prg = _cl._Program(self._context, self._source)
-            del self._context
             return self._prg
 
     def get_info(self, arg):