diff --git a/pyopencl/elementwise.py b/pyopencl/elementwise.py
index 7b7f534040103f2f23735f85c92c1a29ea4c3ffb..694a735c4d70a8058dc0d6663a1113e9aeecd775 100644
--- a/pyopencl/elementwise.py
+++ b/pyopencl/elementwise.py
@@ -326,7 +326,8 @@ class ElementwiseTemplate(KernelTemplateBase):
             name=renderer(self.name), options=list(options),
             preamble=(
                 type_decl_preamble
-                + "\n" + renderer(self.preamble + "\n" + more_preamble)),
+                + "\n"
+                + renderer(self.preamble + "\n" + more_preamble)),
             auto_preamble=False)
 
 # }}}
diff --git a/pyopencl/scan.py b/pyopencl/scan.py
index a56f6a07e6aaa7305934f3d567f82a61239e4273..9692233daca57ec19629c3e91c95d5dd65b97d91 100644
--- a/pyopencl/scan.py
+++ b/pyopencl/scan.py
@@ -1543,6 +1543,11 @@ class ScanTemplate(KernelTemplateBase):
             options=(), devices=None, scan_cls=GenericScanKernel):
         renderer = self.get_renderer(type_aliases, var_values, context, options)
 
+        arg_list = renderer.render_argument_list(self.arguments, more_arguments)
+
+        type_decl_preamble = renderer.get_type_decl_preamble(
+                context.devices[0], declare_types, arg_list)
+
         return scan_cls(context, renderer.type_aliases["scan_t"],
             renderer.render_argument_list(self.arguments, more_arguments),
             renderer(self.input_expr), renderer(self.scan_expr), renderer(self.neutral),
@@ -1551,7 +1556,11 @@ class ScanTemplate(KernelTemplateBase):
             input_fetch_exprs=self.input_fetch_exprs,
             index_dtype=renderer.type_aliases.get("index_t", np.int32),
             name_prefix=renderer(self.name_prefix), options=list(options),
-            preamble=renderer(more_preamble+"\n"+self.preamble), devices=devices)
+            preamble=(
+                type_decl_preamble
+                + "\n"
+                + renderer(self.preamble + "\n" + more_preamble)),
+            devices=devices)
 
 # }}}