diff --git a/include/core/SkClipStack.h b/include/core/SkClipStack.h
index 6e8da76..bc2d6f6 100644
--- a/include/core/SkClipStack.h
+++ b/include/core/SkClipStack.h
@@ -42,6 +42,7 @@
         B2FIter(const SkClipStack& stack);
 
         struct Clip {
+            Clip() : fRect(NULL), fPath(NULL), fOp(SkRegion::kIntersect_Op) {}
             friend bool operator==(const Clip& a, const Clip& b);
             friend bool operator!=(const Clip& a, const Clip& b);
             const SkRect*   fRect;  // if non-null, this is a rect clip
diff --git a/include/core/SkWriter32.h b/include/core/SkWriter32.h
index c8ebb6a..bb42b4c 100644
--- a/include/core/SkWriter32.h
+++ b/include/core/SkWriter32.h
@@ -28,11 +28,13 @@
 
 class SkWriter32 : SkNoncopyable {
 public:
-    SkWriter32(size_t minSize) {
-        fMinSize = minSize;
-        fSize = 0;
-        fHead = fTail = NULL;
-        fSingleBlock = NULL;
+    SkWriter32(size_t minSize)
+        : fMinSize(minSize),
+          fSize(0),
+          fSingleBlock(NULL),
+          fSingleBlockSize(0),
+          fHead(NULL),
+          fTail(NULL) {
     }
     ~SkWriter32();
 
diff --git a/src/core/SkClipStack.cpp b/src/core/SkClipStack.cpp
index 5061ac3..0786ec8 100644
--- a/src/core/SkClipStack.cpp
+++ b/src/core/SkClipStack.cpp
@@ -22,6 +22,7 @@
     }
 
     Rec(int saveCount, const SkPath& path, SkRegion::Op op) : fPath(path) {
+        fRect.setEmpty();
         fSaveCount = saveCount;
         fOp = op;
         fState = kPath_State;
diff --git a/src/core/SkDeque.cpp b/src/core/SkDeque.cpp
index 9d685ee..b78c0e0 100644
--- a/src/core/SkDeque.cpp
+++ b/src/core/SkDeque.cpp
@@ -225,9 +225,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-SkDeque::F2BIter::F2BIter() {
-    fPos = NULL;
-}
+SkDeque::F2BIter::F2BIter() : fHead(NULL), fPos(NULL), fElemSize(0) {}
 
 SkDeque::F2BIter::F2BIter(const SkDeque& d) {
     this->reset(d);
diff --git a/src/pdf/SkPDFShader.cpp b/src/pdf/SkPDFShader.cpp
index 6845e09..1f58f1f 100644
--- a/src/pdf/SkPDFShader.cpp
+++ b/src/pdf/SkPDFShader.cpp
@@ -749,12 +749,13 @@
 SkPDFShader::State::State(const SkShader& shader,
                           const SkMatrix& canvasTransform, const SkIRect& bbox)
         : fCanvasTransform(canvasTransform),
-          fBBox(bbox) {
-
+          fBBox(bbox),
+          fPixelGeneration(0) {
     fInfo.fColorCount = 0;
     fInfo.fColors = NULL;
     fInfo.fColorOffsets = NULL;
     shader.getLocalMatrix(&fShaderTransform);
+    fImageTileModes[0] = fImageTileModes[1] = SkShader::kClamp_TileMode;
 
     fType = shader.asAGradient(&fInfo);
 
