diff --git a/examples/12_floating_pixel.cpp b/examples/12_floating_pixel.cpp
index 6f44a782f88ce7e79f0369390621e93f276b685e..2832295b45f763af548d76fa722ae16931543bbd 100644
--- a/examples/12_floating_pixel.cpp
+++ b/examples/12_floating_pixel.cpp
@@ -19,7 +19,9 @@ int main(int argc, char const* argv[]) try
 
 	software_window win("Floating pixel", int2::one(400), window::flags::borderless);
 
-	const unsigned zoom = argc > 1 ? simple::support::ston<unsigned>(argv[1]) : 16;
+	const int zoom = argc > 1 ? simple::support::ston<int>(argv[1]) : 16;
+	if(zoom <= 0)
+		throw std::logic_error("zoom is not positive!");
 	const unsigned waypoint_count = argc > 2 ? simple::support::ston<unsigned>(argv[2]) : 5;
 	const float fastity = argc > 3 ? simple::support::ston<float>(argv[3]) : 0.1;
 
diff --git a/examples/13_draw_line.cpp b/examples/13_draw_line.cpp
index e63fe9e401b13b2e5a8c2fd795bccf1bd159b712..b6f26d000773721ff52481bcb00545639410c25f 100644
--- a/examples/13_draw_line.cpp
+++ b/examples/13_draw_line.cpp
@@ -38,7 +38,9 @@ int main(int argc, char const* argv[]) try
 
 	software_window win("Line drawing", int2::one(400), window::flags::borderless);
 
-	const unsigned zoom = argc > 1 ? simple::support::ston<unsigned>(argv[1]) : 1;
+	const int zoom = argc > 1 ? simple::support::ston<int>(argv[1]) : 1;
+	if(zoom <= 0)
+		throw std::logic_error("zoom is not positive!");
 
 	const auto logical_size = win.surface().size() / zoom;
 	surface canvas (logical_size, pixel_format(pixel_format::type::rgb24));
diff --git a/examples/bonus_02_floating_trixels.cpp b/examples/bonus_02_floating_trixels.cpp
index 39002d279298cd300265c56ee2d8ae9028a1e444..b044fc59f4dc3e29af30421a281b623f60288c6c 100644
--- a/examples/bonus_02_floating_trixels.cpp
+++ b/examples/bonus_02_floating_trixels.cpp
@@ -34,7 +34,10 @@ struct floating_pixel
 
 int main(int argc, char const* argv[]) try
 {
-	const unsigned zoom = argc > 1 ? simple::support::ston<unsigned>(argv[1]) : 16;
+	const int zoom = argc > 1 ? simple::support::ston<int>(argv[1]) : 16;
+	if(zoom <= 0)
+		throw std::logic_error("zoom is not positive!");
+
 	const unsigned waypoint_count = argc > 2 ? simple::support::ston<unsigned>(argv[2]) : 5;
 	const float fastity = argc > 3 ? simple::support::ston<float>(argv[3]) : 0.1;
 	const unsigned pixel_count = argc > 4 ? simple::support::ston<unsigned>(argv[4]) : 10000;
diff --git a/source/simple/graphical/color_vector.hpp b/source/simple/graphical/color_vector.hpp
index 50c0260bd0d51c83472f856365b29d5c034d80ff..08081ccf54b7a738922466b1bc8440c19fda9fd3 100644
--- a/source/simple/graphical/color_vector.hpp
+++ b/source/simple/graphical/color_vector.hpp
@@ -215,7 +215,7 @@ namespace simple
 	public support::define_array_operators<geom::vector<C,D,O>>
 	{
 		// revert these to default beahvior, in this context means no type promotion
-		template <typename, support::array_operator, typename>
+		template <typename, support::array_operator, typename, bool>
 		using result = graphical::color_vector<C,D,O>;
 		using compatibility_tag = graphical::color_vector<C,D,O>;
 	};
diff --git a/source/simple/graphical/window.h b/source/simple/graphical/window.h
index f74c78dc3f402733e6f9df3eae6aeb32f906e7f1..5e1492ec765222c5dbbad24669cfe1c3ab2fb3b8 100644
--- a/source/simple/graphical/window.h
+++ b/source/simple/graphical/window.h
@@ -56,8 +56,8 @@ namespace simple::graphical
 
 		};
 
-		constexpr static const int2 undefined_position = int2::one() * SDL_WINDOWPOS_UNDEFINED;
-		constexpr static const int2 center_position = int2::one() * SDL_WINDOWPOS_CENTERED;
+		constexpr static const int2 undefined_position = int2::one() * int(SDL_WINDOWPOS_UNDEFINED);
+		constexpr static const int2 center_position = int2::one() * int(SDL_WINDOWPOS_CENTERED);
 
 		int2 size() const noexcept;
 		void size(int2 value) const noexcept;