Index: lib/Padre/Wx/Main.pm
===================================================================
--- lib/Padre/Wx/Main.pm	(revision 10142)
+++ lib/Padre/Wx/Main.pm	(working copy)
@@ -612,6 +612,18 @@
 	return;
 }
 
+sub _xy_on_screen {
+    # Returns true if the initial xy coordinate is on the screen
+    # See ticket #822
+    my $self = shift;
+    my $config = $self->config;
+    if ( $config->main_top < 0 or $config->main_left < 0 ) {
+        return 0;
+    }
+    # Add check for values > screen size?
+    1;
+}
+
 sub _timer_post_init {
 	my $self    = shift;
 	my $config  = $self->config;
@@ -629,7 +641,7 @@
 	# size, reposition to the defaults).
 	# This must happen AFTER the initial ->Show(1) because otherwise
 	# ->IsShownOnScreen returns a false-negative result.
-	unless ( $self->IsShownOnScreen ) {
+	unless ( $self->IsShownOnScreen and $self->_xy_on_screen ) {
 		$self->SetSize(
 			Wx::Size->new(
 				$config->default('main_width'),
