Index: modules/library/render/src/main/java/org/geotools/map/DefaultMapLayer.java
===================================================================
--- modules/library/render/src/main/java/org/geotools/map/DefaultMapLayer.java	(revision 33435)
+++ modules/library/render/src/main/java/org/geotools/map/DefaultMapLayer.java	(working copy)
@@ -34,11 +34,13 @@
 import org.geotools.feature.SchemaException;
 import org.geotools.geometry.jts.ReferencedEnvelope;
 import org.geotools.map.event.MapLayerEvent;
+import org.geotools.referencing.CRS;
 import org.geotools.resources.coverage.FeatureUtilities;
 import org.geotools.styling.Style;
 import org.opengis.coverage.grid.GridCoverage;
 import org.opengis.feature.simple.SimpleFeature;
 import org.opengis.feature.simple.SimpleFeatureType;
+import org.opengis.geometry.Envelope;
 import org.opengis.geometry.MismatchedDimensionException;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.operation.TransformException;
@@ -399,21 +401,34 @@
 				MapLayerEvent.FILTER_CHANGED));
 	}
 	public ReferencedEnvelope getBounds() {
-		
-		CoordinateReferenceSystem sourceCrs = featureSource.getSchema().getCoordinateReferenceSystem();
-		ReferencedEnvelope env;
-		try {
-			env = new ReferencedEnvelope(featureSource.getBounds(), sourceCrs);
-			return env;
-		} catch (MismatchedDimensionException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		return null;
-	}
+            // CRS could also be null, depends on FeatureType
+            CoordinateReferenceSystem sourceCrs = featureSource.getSchema()
+                    .getCoordinateReferenceSystem();
+    
+            try {
+                ReferencedEnvelope bounds = featureSource.getBounds();
+                if (null != bounds) {
+                    // returns the bounds based on features
+                    return bounds;
+                }
+    
+                if (sourceCrs != null) {
+                    // returns the envelope based on the CoordinateReferenceSystem
+                    Envelope envelope = CRS.getEnvelope(sourceCrs);
+                    if (envelope != null) {
+                        return new ReferencedEnvelope(envelope); // nice!
+                    }
+                }
+    
+            } catch (MismatchedDimensionException e) {
+                e.printStackTrace();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            // return a default ReferencedEnvelope
+            return new ReferencedEnvelope(sourceCrs);
+        }
+	
 	// ------------------------------------------------------------------------
 	// EVENT HANDLING CODE
 	// ------------------------------------------------------------------------
